Ich verwende den Filter posts_where, um die Benutzersuche in einem Web zu ändern, aber ich finde heraus, dass einige Standard-Widgets wie die "neueren Beiträge" diesen Filter ebenfalls verwenden und ihr Verhalten ebenfalls geändert wird. Ich versuche einen Weg zu finden, um zu vermeiden, dass andere als die Benutzersuchen den posts_where-Filter verwenden.
Das ist mein 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;
}
Gibt es eine andere Funktion oder eine Möglichkeit, diesen Hook / Filter nur für die Suchabfrage zu verwenden? (derjenige, der die Ergebnisse aus der Benutzereingabe abruft)
$q
.$wp_query
aber das könnte mit der globalen$wp_query
, anderen Verwendung$qry
oder verwechselt werden$query
, aber das könnte auch verwirrend sein, wenn wir sind Umgang mit SQL-Abfragen ;-) Ich habe mich$q
in diesem kurzen Ausschnitt entschieden und es sieht auch einfacher aus als zB.$wp_query_obj
Normalerweise nehme ich die mehrfachen if-contidtions in eine separate Zeile @MichaelEcklund