Intereting Posts

Как добавить фильтр таксономии по запросу?

Я пытаюсь добавить налоговый запрос на крюке pre_get_posts, используя следующий код:

// Add custom posts to main query (archive and home) add_action( 'pre_get_posts', 'add_post_types_to_query' ); function add_post_types_to_query( $query ) { if ( (is_home() || is_category() || is_search()) && $query->is_main_query() && !is_admin() ) { // Query all posts on index and category pages $query->set( 'post_type', array( 'post', 'page', 'definition', 'video', 'data_vizualization', 'quizz', 'talk', 'question', 'study', 'bibliography' ) ); $workspace_taxonomy_query = array(array( 'taxonomy ' => 'workspace', 'field' => 'slug', 'terms' => array('particulier'), 'operator' => 'IN' )); $query->tax_query->queries[] = $workspace_taxonomy_query; $query->set( 'tax_query', $workspace_taxonomy_query); } return $query; } 

Этот код дает следующее: «0 = 1». Что не так? Это хороший крюк? Как я могу правильно добавить фильтр таксономии ПЕРЕД основным запросом?

Спасибо заранее за ответы!

Solutions Collecting From Web of "Как добавить фильтр таксономии по запросу?"

У вас есть синтаксическая ошибка или орфографическая ошибка. В вашем массиве tax_query есть пробел после «таксономии». Если бы это была сумма, я бы только что опубликовал комментарий, но дополнительно, что $query->tax_query->queries[] = $workspace_taxonomy_query; линия бессмысленна. Ничто не меняется с ним или без него. Не пытайтесь взломать массив. Просто используйте $query->set( 'tax_query', $workspace_taxonomy_query); как показано ниже (с использованием таксономии и термина, который существует в моей тестовой среде):

 // Add custom posts to main query (archive and home) add_action( 'pre_get_posts', 'add_post_types_to_query' ); function add_post_types_to_query( $query ) { if ( (is_home() || is_category() || is_search()) && $query->is_main_query() && !is_admin() ) { // Query all posts on index and category pages $query->set( 'post_type', array( 'post', 'page', 'definition', 'video', 'data_vizualization', 'quizz', 'talk', 'question', 'study', 'bibliography' ) ); $workspace_taxonomy_query = array( array( 'taxonomy' => 'post_tag', 'field' => 'slug', 'terms' => array('test-4'), 'operator' => 'IN' ) ); $query->tax_query->queries[] = $workspace_taxonomy_query; } return $query; }