web-dev-qa-db-fra.com

comment effectuer une recherche dans les champs personnalisés et la taxonomie personnalisée

J'ai une recherche personnalisée qui est un formulaire qui est soumis à la même page et utilise wp_query pour filtrer les résultats d'un site d'emplois. J'aimerais également que la recherche par mot-clé recherche également dans des champs personnalisés et une taxonomie personnalisée, mais je ne sais pas comment procéder. utilisez posts_join pour faire cela.

Je souhaite autoriser l'utilisateur à saisir le numéro de référence dans la zone de mot-clé et à le rechercher dans tous les champs personnalisés et la taxonomie personnalisée, sans filtrer les résultats, car ils ne correspondent pas toujours. Par conséquent, si je recherche une compétence, je ne le fais pas. Je veux qu'il ne renvoie pas de résultat s'il ne correspond pas au champ personnalisé de la compétence, car le mot clé peut-être dans la description principale.

cela a-t-il du sens?

UPDATE: J'ai trouvé ce code: Inclure le terme de taxonomie personnalisé dans la recherche

Mais cela ne fonctionne pas correctement pour une raison quelconque plutôt que de rapporter 11 résultats, il est en train de montrer 114, donc quelque chose qui n’est pas tout à fait correct. Survolez la recherche dans la taxonomie personnalisée, c’est donc un point de départ.

J'en ai juste besoin pour effectuer une recherche dans la taxonomie personnalisée et les champs personnalisés, mais je fixe le nombre de résultats.

1
Lee

J'ai réussi à comprendre en adaptant ce code à partir du lien que j'ai posté:

function atom_search_where($where){
global $wpdb;
if($_SESSION['js'] != '')
$where .= "OR (t.name LIKE '%".trim($_SESSION['js'])."%' AND {$wpdb-    >posts}.post_status = 'publish')";
$where .= "OR ($wpdb->postmeta.meta_key = '_job_ref' AND $wpdb->postmeta.meta_value = '".$_SESSION['js']."')";
return $where;
}

function atom_search_join($join){
global $wpdb;
if($_SESSION['js'] != '')
$join .= "LEFT JOIN {$wpdb->term_relationships} tr ON {$wpdb->posts}.ID = tr.object_id INNER JOIN {$wpdb->term_taxonomy} tt ON tt.term_taxonomy_id=tr.term_taxonomy_id INNER JOIN {$wpdb->terms} t ON t.term_id = tt.term_id";
$join .= "LEFT JOIN $wpdb->postmeta ON ($wpdb->posts.ID = $wpdb->postmeta.post_id)";
return $join;
}
1
Lee

Jetez un coup d'œil à ce plugin: Rechercher tout

0
kevin