Intereting Posts
Создание вкладок на странице параметров администрирования из настраиваемого цикла post post Как правильно обрабатывать запросы ajax с помощью плагинов ajax Дублируйте и измените боковую панель для Twenty Eleven Измените ссылку «Howdy» в верхнем правом углу the_post_thumbnail не изменяет размер Изменение структуры постоянных ссылок для определенной категории Объединить запрос «Исключить» в functions.php Включить поиск WordPress на основе запроса? S = <запрос> Как просмотреть свой веб-сайт без верхней панели администратора WordPress, но оставаться в нем? как я могу вызвать модальный вход на определенную страницу? Как проанализировать новые пользовательские данные из WordPress на стороннее CRM-программное обеспечение? Что происходит с текстом в файле functions.php вне приложения php? как написать 301 код перенаправления для продукта woocommerce Как изменить почту по умолчанию, когда администратор одобрил пользователя? Лучший способ назначить должность на главной странице новостного сайта? (без категорий, без липких сообщений)

Как получить все уникальные категории для сообщений в цикле?

Я ищу, чтобы получить простой список уникальных категорий в настраиваемом цикле (только категории для записей в цикле). Я немного искал какой-то код и вот что у меня есть:

<?php $args = array( 'post_status'=>'publish', 'post_type'=>'post', 'posts_per_page'=>-1 ); $get_posts = new WP_Query(); $get_posts->query($args); if($get_posts->have_posts()) { $cats = array(); while($get_posts->have_posts()) { $get_posts->the_post(); $post_categories = wp_get_post_categories( get_the_ID() ); $i = 0; foreach($post_categories as $c){ $cat = get_category( $c ); $cats[$i] = $cat->slug ; $i++; } } //endwhile $result = array_unique($cats); print_r($result); } //endif wp_reset_postdata(); ?> 

Это поместит каждую категорию статей в массив, и я смогу ее распечатать. Но я хочу объединить каждый массив столбцов категорий, удалить дубликаты (так что есть только один экземпляр каждой уникальной категории), а затем сможет распечатать его.

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

У кого-нибудь есть идеи?

Большое спасибо, Иона

Solutions Collecting From Web of "Как получить все уникальные категории для сообщений в цикле?"

EDIT: Перемещено $i = 0 вне цикла. Это даст вам полный список категорий.

 $get_posts = new WP_Query(); $i = 0; $get_posts->query($args); if($get_posts->have_posts()) { $cats = array(); while($get_posts->have_posts()) { $get_posts->the_post(); $post_categories = wp_get_post_categories( get_the_ID() ); foreach($post_categories as $c){ $cat = get_category( $c ); $cats[$i] = $cat->slug ; $i++; } } //endwhile $result = array_unique($cats); print_r($result); } //endif wp_reset_postdata(); 

В основном это выравнивает вложенные массивы в $cats – я думаю, что array_unique возможно, отбрасывал категории, потому что у них был идентичный ключ.

РЕДАКТИРОВАТЬ

Вы сохраняете категории в массиве. Это очень хорошо. Я меняю этот блок на код. См. Измененный код

  $cats = array(); while($get_posts->have_posts()) { $get_posts->the_post(); $post_categories = wp_get_post_categories( get_the_ID() ); foreach($post_categories as $c){ $cat = get_category( $c ); $cats[] = array( 'slug' => $cat->slug ); } } //endwhile $result = array_unique($cats); print_r($result); 

Там есть функция array_unique . С помощью этой функции вы можете получить уникальное значение. См. Учебник для лучшего знания.