web-dev-qa-db-fra.com

rechercher aussi dans la taxonomie, les tags et les champs personnalisés

J'ai trouvé de nombreuses réponses séparément pour la taxonomie, les champs personnalisés et les balises, la plupart obsolètes.

Mais comment combiner une recherche dans:

- designed custom fields of a custom post
- custom taxonomy terms
- Tags
- Title (already by default)
- Content (already by default)

Un de mes articles personnalisés pourrait être par exemple:

item 1
tag: tag1, tag2, tag3
taxonomy: tax1, tax2
custom field 1: cf1
title: composed title 1
desc: a full paragraph with many words

Maintenant, j'aimerais pouvoir rechercher:

"paragraph tag2 cf1 composed"

La solution semble incroyablement compliquée. N'est-ce possible qu'avec une nouvelle requête SQL (JOIN LEFT etc.)? Puis-je trouver mon chemin avec la simple $query->set()?

add_filter( 'pre_get_posts', 'cjg_theme_filter' );

if (!function_exists('cjg_theme_filter')) {
    function cjg_theme_filter( $query ){

    if ( $query->is_main_query() ){
          //is_search is necessary for custom taxonomy urls
        if ( $query->get( 'tag' ) OR $query->get( 'artprim_categories' ) OR is_search() )
            $query->set( 'post_type', array( 'post', 'artprim_item' ) );

        if ( is_search() ){
            $queryString = $query->query_vars['s'];

            $queryTab = explode(' ', $queryString);

            $meta = array();
            foreach($queryTab as $queryString){
                $meta[] = array(
                    'key' => 'date',
                    'value' => $queryString,
                    'compare' => 'LIKE');
            }
            $query->set( 'meta_query',$meta );
        };        
    }

    return $query;

}}
1
Christian

il semble que Relevanssi est un très bon plugin mis à jour

ça a résolu mes problèmes

1
Christian