#wordpress #categories #posts
#wordpress #Категории #Публикации
Вопрос:
Я пытаюсь создать область «Популярные статьи» на всех страницах категории, над циклом, в котором отображаются сообщения. Я добавил флажок «Избранный пост» для каждого поста, который позволяет администратору отмечать определенные посты как избранные, и я смог отображать эти посты в верхней части каждой страницы категории. НО в настоящее время он отображает ВСЕ избранные сообщения на всех страницах категории, и мне нужно, чтобы система фильтровала сообщения, чтобы показывать ТОЛЬКО сообщения, которые находятся в той же категории, что и страница, на которой они отображаются.
Вот что я использую в своем файле функций, который хорошо работает для отображения избранных сообщений — любая помощь в добавлении фильтрации категорий приветствуется!
$args = array(
'posts_per_page' => 5,
'meta_key' => 'meta-checkbox',
'meta_value' => 'yes'
);
$featured = new WP_Query($args);
if ($featured->have_posts()): while($featured->have_posts()): $featured->the_post(); ?>
<h3><a href="<?php the_permalink(); ?>"> <?php the_title(); ?></a></h3>
<p class="details">By <a href="<?php the_author_posts() ?>"><?php the_author(); ?> </a> / On <?php echo get_the_date('F j, Y'); ?> / In <?php the_category(', '); ?></p>
<?php if (has_post_thumbnail()) : ?>
<figure> <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a> </figure>
<p ><?php the_excerpt();?></p>
<?php
endif;
endwhile; else:
endif;
?>```
Ответ №1:
Если это нужно только для страниц архива категорий, а не для других или пользовательских таксономий, все, что вам нужно, это глобальная переменная $category_name
. Несмотря на то, что это называется «имя», на самом деле это пуля категории, что позволяет нам использовать его в tax_query
поле, которое мы добавим к нашему запросу.
Сначала мы делаем $category_name
его доступным, а затем используем его в нашем запросе вместе с вашими мета-полями:
global $category_name;
$featured_posts = new WP_Query(
[
"showposts" => 5,
"meta_key" => "meta-checkbox",
"meta_value" => "yes",
"tax_query" => [
[
"taxonomy" => "category",
"field" => "slug",
"terms" => $category_name,
],
]
]
);
Это даст нам сообщения, которые
- внутри категории текущей страницы архива категории,
- помечены администратором как избранные сообщения с помощью
meta-checkbox
мета-ключа.
Теперь мы можем использовать эти сообщения и просматривать их. Вот очень простой цикл с небольшой разметкой:
if ($featured_posts->have_posts()) {
while ($featured_posts->have_posts()) {
$featured_posts->the_post();
?>
<h3>
The post "<?php the_title(); ?>" is in category "<?php the_category(" "); ?>"
</h3>
<?php
}
}
else {
?>
<h3>No featured posts were found :(</h3>
<?php
}
Вот пример того, как это выглядит. Как вы можете видеть, все пять сообщений находятся в той же категории, что и категория страницы архива.
Я надеюсь, что это помогло.
Комментарии:
1. Большое вам спасибо! Я очень ценю, что вы нашли время, чтобы помочь незнакомому человеку, это было ИМЕННО то, что я искал!