#php #wordpress
#php #wordpress
Вопрос:
Итак, у меня есть пользовательский тип с именем («knowledge_base»), который имеет таксономию с именем (‘section’), и один из них (‘dog bite’). Прямо сейчас я на example.com/section/dog-bite / и я пытаюсь показать сообщения, расположенные здесь. Это то, что у меня есть на данный момент, поэтому я не уверен, чего не хватает, но он просто отображает ВСЕ сообщения из всех разделов.
$current = get_queried_object();
$args = array(
'post_type' => 'knowledge_base',
'tax_query' => array(
array(
'taxonomy' => 'section',
'field' => $current->slug,
'terms' => $current->name
)
)
);
// The Query
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
} else {
// no posts found
}
Комментарии:
1. Работает ли это, если вы жестко закодируете
field
иterms
? Кроме того, вы пробовали вызывать var_dump, чтобы подтвердить, что$current->slug
и$current->name
являются ли значения, которые вы ожидаете?2. Да, я только что попробовал это, но все еще показывает ВСЕ сообщения. Я загрузил скриншот i.stack.imgur.com/ISpkb.png
Ответ №1:
Проверьте этот код.
$args = array(
'post_type' => 'knowledge_base',
'tax_query' => array(
array(
'taxonomy' => 'section',
'field' => 'slug', // ‘term_id’, ‘name’, ‘slug’ or ‘term_taxonomy_id’
'terms' => $current->slug, // It's will be $term->slug
)
)
);
// The Query
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
}
Комментарии:
1. Я пытался, но он по-прежнему показывает ВСЕ сообщения. Вот скриншот i.stack.imgur.com/ISpkb.png
2. @TheAdvocates Вам нужно изменить свои аргументы, чтобы использовать
'field' => 'slug'
, т.е.field
должно быть слово'slug'
, а не слаг, который вы ищете. Код на вашем скриншоте показывает'field' => 'dog-bite'
. Покажите нам результат, когда вы измените его на этот, пожалуйста.