J'ai un type de message appelé usr_jardin avec un champ personnalisé appelé sim_nuip. J'aimerais que la recherche fonctionne pour le titre de l'article et aussi par champ personnalisé. J'essaye ça mais ça ne me fonctionne pas.
function searchfilter($query)
{
$custom_fields = array("_post_title", "nuip");
$searchterm = $query->query_vars['s'];
$query->query_vars['s']="";
if($searchterm != "")
{
$meta_query = array('relation' => 'OR');
foreach($custom_fields as $cf)
{
array_Push($meta_query, array('key'=> $cf,'value'=> $searchterm,'compare'=> 'LIKE'));
}
$query->set("meta_query", $meta_query);
}
if($query->is_search)
{
$query->set('post_type', array('post', 'usr_jardin'))
}
return $query;
}
add_filter('pre_get_posts','searchfilter');
add_action('save_post','add_title_custom_field');
function add_title_custom_field($postid){
update_post_meta($postid, "_post_title", $_POST["post_title"]);
}
pre_get_posts
est une action, pas un filtre. Change ça:
add_filter('pre_get_posts','searchfilter');
pour ça:
add_action('pre_get_posts','searchfilter');
Vous n'avez pas non plus besoin de renvoyer $query
.
Voir la documentation de pre_get_posts: http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts