Wie erkenne ich eine benutzerdefinierte Abfrage im `posts_where`-Hook?

Stellen Sie sich vor, Sie haben so etwas:

function f_posts_where( $where ){ // set a condition based on arguments ... } add_filter( 'posts_where', 'f_posts_where' ); 

Was ist der beste Weg, um eine Bedingung für meine benutzerdefinierte Abfrage innerhalb der f_posts_where ?

Ich erstelle eine benutzerdefinierte Abfrage wie folgt:

 $q = new \WP_Query( $args ); 

Solutions Collecting From Web of "Wie erkenne ich eine benutzerdefinierte Abfrage im `posts_where`-Hook?"

Wenn wir die Abfrageargumente so haben

 $args = array( 'queryid' => 'blackjack', ... ); $q = new WP_Query( $args ); 

Beachten Sie, dass wir ein benutzerdefiniertes Abfrageargument hinzugefügt haben, das hier nicht offiziell vorhanden ist . Jetzt können wir die genaue Abfrage durch diese queryid identifizieren, wenn wir den zweiten Parameter des posts_where .

 function f_posts_where( $where, \WP_Query $q ){ // $q->query will hold the query arguments ... if ( 'blackjack' == $q->query['queryid'] ){ // do our custom actions on $where for our queryid blackjack return $where. } return $where; } add_filter( 'posts_where', 'f_posts_where', 10 , 2 ); 

Wie Sie sehen können, wird $q->query die Abfrageargumente enthalten.

Dadurch können wir die benutzerdefinierten Abfragen, die wir mögen, abfangen, wenn wir benutzerdefinierte Argumente hinzufügen, die wir mögen. In diesem Fall die queryid .