WP_Query erkennt den Taxonomieparameter in der benutzerdefinierten Suche nicht

Ich habe ein Suchformular mit einer Standardtexteingabe und einer Auswahleingabe, um einen Taxonomiebegriff auszuwählen.

Die Abfrage verwendet die Eingaben, um eine WP_Query auszuführen und die Ergebnisse anzuzeigen. Das einzige Problem besteht darin, dass die Abfrage den Taxonomieparameter scheinbar nicht ausführt. Ich kann ein Schlüsselwort in Ordnung eingeben und es werden die korrekten Ergebnisse angezeigt, jedoch wird der Taxonomieparameter nicht übernommen. Wenn ich kein Schlüsselwort eingeben, aber einen Taxonomiebegriff aus der Auswahleingabe auswähle, werden keine Ergebnisse gefunden.

Der Wert aus der Auswahleingabe wird übergeben, er befindet sich in der URL auf der Suchergebnisseite und ich habe ihn auf der Ergebnisseite wiederholt.

Wenn ich die WP_Query-Anfrage zurückgebe, wird kein Versuch beschrieben, nach Produkten in der benutzerdefinierten Taxonomie “Produktkategorie” zu suchen.

Hier ist die Form –

<form method="get" id="advanced-searchform" role="search" action="">    Select category  $post_type, 'order' => 'ASC', 'orderby' => 'date' ) ); foreach( $taxonomies as $taxonomy ) : $terms = get_terms( $taxonomy ); foreach( $terms as $term ) : ?> <option value="slug; ?>">name; ?>     

Hier ist die Abfrage –

 $_keyword = $_GET['product-name']; $_cat = $_GET['category']; $product_args = array( 's' => $_keyword, 'post_type' => 'product', 'posts_per_page' => 10, 'taxonomy' => 'product-category', 'terms' => $_cat ); $productSearchQuery = new WP_Query( $product_args ); echo $productSearchQuery->request; 

Habe es auch versucht –

 $product_args = array( 's' => $_keyword, 'post_type' => 'product', 'posts_per_page' => 10, 'tax_query' => array( array( 'taxonomy' => 'product-category', 'field' => 'slug', 'terms' => $_cat, ) ), ); 

Abfrageanforderungsbeispiel –

 SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND ( 0 = 1 ) AND wp_posts.post_type = 'product' AND (wp_posts.post_status = 'publish' OR wp_posts.post_author = 1 AND wp_posts.post_status = 'private') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10 

Solutions Collecting From Web of "WP_Query erkennt den Taxonomieparameter in der benutzerdefinierten Suche nicht"

Die bessere Option könnte sein, den pre_get_posts Hook stattdessen zu verwenden, um die Abfrage zu modifizieren, bevor sie angefordert wird, anstatt eine eigene Abfrage zu erstellen. So würde es aussehen:

 /** * Modify Theme Queries * - https://developer.wordpress.org/reference/hooks/pre_get_posts/ * - https://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts * * @param $query * * @return void */ function theme_pgp( $query ) { if( is_admin() ) { return; // If we're in the admin panel - drop out } if( $query->is_main_query() && $query->is_search() ) { // Apply to all search queries // IF our category is set and not empty - include it in the query if( isset( $_GET['category'] ) && ! empty( $_GET['category'] ) ) { $query->set( 'tax_query', array( array( 'taxonomy' => 'product-category', 'field' => 'slug', 'terms' => array( sanitize_text_field( $_GET['category'] ) ), ) ) ); } } } add_action( 'pre_get_posts', 'theme_pgp' ); 

An dieser Stelle auf Ihrer Suchseite können Sie einfach Ihre Standardschleife anstelle der benutzerdefinierten WP_Query verwenden:

 if( have_posts() ) { while( have_posts() ) { the_post(); the_title(); } }