Wp Query — Фильтровать Пользовательский Тип Сообщения По Пользовательской Таксонии

  • Автор темы Stasila
  • Обновлено
  • 22, Oct 2024
  • #1

У меня есть несколько пользовательских типов сообщений, каждый из которых имеет одну или несколько пользовательских таксономий. Я хотел бы добавить фильтр для каждой таксономии на экран редактирования соответствующего пользовательского типа сообщения, но мое решение не работает.


Проблема

Во-первых, я знаю, почему запрос терпит неудачу, но я не знаю, что является причиной такого построения запроса.

Когда я проверяю

 
 post_tag 
query after filtering a post type I notice that the condition category существует, что, конечно, никогда не будет правдой.


Мое (сломанное) решение

Для вывода различных фильтров я использую класс, который можно найти в это Пастебин.

Чтобы инициировать класс, я использую этот код (здесь он урезан только для одного типа сообщения и таксономии, на которую я буду ссылаться для простоты в оставшейся части этого вопроса) –

$wp_query

Фильтры отображаются отлично, однако при использовании любого из них WP не возвращает результатов.


Мое расследование

Я изучил полученный результат query.php global and I notice that WP is actually adding [tax_query] => WP_Tax_Query Object ( [queries] => Array ( [0] => Array ( [taxonomy] => file_type [terms] => Array ( [0] => 22 ) [field] => slug [operator] => IN [include_children] => 1 ) ) [relation] => AND [table_aliases:protected] => Array ( ) [queried_terms] => Array ( [file_type] => Array ( [terms] => Array ( [0] => 22 ) [field] => slug ) ) [primary_table] => fgw_posts [primary_id_column] => ID ) к tax_query and query_var массивы и query array appears to be created correctly.

Однако, как упоминалось ранее, WP по какой-то причине неправильно строит запрос, а это означает, что результаты не найдены.

[file_type] => 22

Мой вопрос

Что дальше? Где я могу найти решение этой проблемы? я пролистал $wp_query , but I'm nore really sure what I'm looking for.

Я искренне озадачен таким поведением, особенно при сравнении результирующих add_action('init', 'fgw_filter_taxonomies'); function fgw_filter_taxonomies(){ new FGW_CPT_Taxonomy_Filter( array('file' => array('file_type')) ); } global to that generated when filtering the builtin AND (1=0) или $wp_global texonomy seems identical (other than the name of the taxonomy of course).

#wp-query #custom-taxonomy

Stasila


Рег
11 Jan, 2009

Тем
79

Постов
201

Баллов
626
  • 25, Oct 2024
  • #2

Итак, ответ здесь одновременно раздражает, и его довольно сложно найти/исправить.

 /**

* Custom extended FGW_Cat_Slug_Walker Class

* Outputs the term 'slug' as the value of each option, not 'term_id' (as is default)

*/
class FGW_Cat_Slug_Walker extends Walker_CategoryDropdown{

/**

* Start the element output

*

* @param required string $output   Passed by reference. Used to append additional content

* @param required object $category Category data object

* @param required int    $depth    Depth of category in reference to parents. Default 0

* @param required array  $args     An array of arguments

* @param required int    $id       ID of the current category

*/

public function start_el(&$output, $category, $depth = 0, $args = array(), $id = 0){

$pad = str_repeat(' ', $depth * 3);    // Create the padding (before nested terms)

/** Generate the HTML for this option */

$output.= sprintf("\t".

'<option class="%1$s" value="%2$s" %3$s>%4$s%5$s</option>',

/** %1$s - 'class' attribute */     'level-' . $depth,

/** %2$s - 'value' attribute */     $category->slug,

/** %3$s - 'selected' attribute */  ($category->slug == $args['selected']) ? ' selected="selected"' : '',

/** %4$s - option text */           $category->name,

/** %5$s - The term count */        ($args['show_count']) ? '&nbsp;&nbsp;(' . $category->count . ')' : ''

);

}
}
 
function outputs the dropdown for each custom taxonomy filter using the wp_dropdown_categories() как значение для каждого варианта. Однако при построении запроса slug method, by default, sets the field элемент для WP_Query::parse_tax_query() .

Итак, мне пришлось сделать собственный ходунок и использовать его с term_id function, as below -

wp_dropdown_categories()
 

Kate Tereshenko


Рег
07 Apr, 2011

Тем
72

Постов
181

Баллов
541
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно