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;
}}
il semble que Relevanssi est un très bon plugin mis à jour
ça a résolu mes problèmes