J'utilise le filtre posts_where afin de modifier les recherches des utilisateurs sur un web, mais je découvre que certains widgets par défaut comme les "publications les plus récentes" utilisent également ce filtre et leur comportement est également modifié. J'essaie de trouver un moyen d'éviter que quoi que ce soit d'autre que les recherches des utilisateurs utilisent le filtre posts_where.
Voici mon code:
add_filter( 'posts_where' , 'posts_where_statement' );
function posts_where_statement( $where ) {
global $wp_query;
global $expp;
global $wpdb;
$local_db = $wpdb->prefix."posts";
$front_page_id = get_option('page_on_front');
if ( ('page' != get_option('show_on_front') || $front_page_id != $wp_query->query_vars['page_id']) && (!($wp_query->is_search)) )
return $where;
//some $where modifications
remove_all_actions ( '__after_loop');
return $where;
}
Existe-t-il une autre fonction ou un moyen de faire fonctionner ce hook / filtre uniquement avec la requête de recherche? (celui qui récupère les résultats de l'entrée utilisateur)
$q
cependant.$wp_query
mais cela pourrait être confondu avec le global$wp_query
, d'autres$qry
ou ou$query
, mais cela peut aussi être déroutant lorsque nous sommes traitant de la requête SQL ;-) Je me suis contenté de$q
ce court extrait et il semble également plus simple que par exemple.$wp_query_obj
Habituellement, je prends les multiples if-contidtions dans une ligne séparée @MichaelEcklund