我有一个循环,确实显示了要在存档页面上显示的不同类别。
如何仅一次显示类别?
当前,如果两个帖子具有相同的类别,则该类别将是两次
这是我的下面的代码
<div class="row ptb-20">
<?php
$args = array(
'category_name' => 'actualites',
);
// Custom query.
$query = new WP_Query( $args );
// Check that we have query results.
if ( $query->have_posts() ) {
// Start looping over the query results.
while ( $query->have_posts() ) {
$query->the_post();?>
<div class="category-filter">
<div class="single-filter">
<?php
$categories = get_the_category();
$separator = ", ";
$output = ' ';
if ($categories) {
foreach ($categories as $category) {
$output .= '<li><a href="' . get_category_link($category->term_id) . '">' . $category->cat_name . '</a></li>';
}
echo trim($output, $separator);
}
?>
</div>
</div>
<?php
} // End while
} // End if
else { echo '<p>Aucune actualité trouvée</p>'; } ?>
<?php wp_reset_postdata(); ?>
</div>
答案 0 :(得分:0)
方法1:使用插件从WordPress中排除类别 您需要做的第一件事是安装并激活 Ultimate Category Excluder插件。有关更多详细信息,您应按照我们的指南安装WordPress插件。
激活后,您需要转到设置»类别排除程序页面。它将显示您的WordPress博客上可用的所有类别。
方法2:使用代码从WordPress主页中排除类别 此方法要求您将代码添加到WordPress文件中。如果您以前没有做过,请参阅我们的指南,了解如何在WordPress中复制和粘贴代码段。
您将需要在主题的functions.php文件或特定于站点的插件中添加以下代码。
function exclude_category_home( $query ) {
if ( $query->is_home ) {
$query->set( 'cat', '-5' );
}
return $query;
}
add_filter( 'pre_get_posts', 'exclude_category_home' );
不要忘记将ID(-5)替换为您的类别ID。它将隐藏主页中属于该ID类别的所有博客文章。
注意:请确保添加带有类别ID的减号(-)。
请参考:https://www.wpbeginner.com/wp-tutorials/how-to-exclude-a-category-from-your-wordpress-homepage/
答案 1 :(得分:0)
如果我正确理解了您的问题,则可以引入一个变量,您可以在其中记住已经使用了哪些类别,因此不要多次包含它们。
<div class="row ptb-20">
<?php
$args = array(
'category_name' => 'actualites',
);
// Custom query.
$query = new WP_Query( $args );
// Check that we have query results.
if ( $query->have_posts() ) {
// Start looping over the query results.
while ( $query->have_posts() ) {
$query->the_post();?>
<div class="category-filter">
<div class="single-filter">
<?php
$categories = get_the_category();
$categories_displayed = [];
$separator = ", ";
$output = ' ';
if ($categories) {
foreach ($categories as $category) {
if (!in_array($category->cat_name, $categories_displayed)) {
$output .= '<li><a href="' . get_category_link($category->term_id) . '">' . $category->cat_name . '</a></li>';
$categories_displayed[] = $category->cat_name;
}
}
echo trim($output, $separator);
}
?>
</div>
</div>
<?php
} // End while
} // End if
else { echo '<p>Aucune actualité trouvée</p>'; } ?>
<?php wp_reset_postdata(); ?>
</div>