У меня есть цикл, отображающий различные категории для перехода на страницу архива.
Как можно отображать только категории один раз?
В настоящее время, если два поста относятся к одной и той же категории, категория удваивается.
Это мой код ниже
<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>






Способ 1: исключить категорию из WordPress с помощью плагина Первое, что вам нужно сделать, это установить и активировать файл Окончательный плагин для исключения категорий. Для получения более подробной информации вы должны следовать нашему руководству по установке плагина 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 вашей категории. Он скроет все сообщения блога с домашней страницы, принадлежащие категории, соответствующей этому идентификатору.
Примечание. Не забудьте добавить знак минус (-) к идентификатору категории.
См.: https://www.wpbeginner.com/wp-tutorials/how-to-exclude-a-category-from-your-wordpress-homepage/
Если я правильно понимаю вашу проблему, вы можете ввести переменную, в которой вы будете помнить, какие категории уже использовались, чтобы вы не включали их более одного раза.
<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>
Извините, я не проверял это, но это должно быть легко исправить. Обновление сейчас
Спасибо за обновление, но опять ошибка, на том же месте (в начале ругают $separator)
я еще не нашел решение
Привет, и спасибо за ваш ответ. На данный момент ваш код сказал: -> синтаксическая ошибка, неожиданный '[' в (url) -> выше $separator