категории списков на основе обновленных сообщений

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

<?php wp_list_categories('number=15&show_count=0&orderby=post_date&order=rand&title_li=&hierarchical=0&taxonomy=category') ?> 

Solutions Collecting From Web of "категории списков на основе обновленных сообщений"

WordPress по умолчанию не сохраняет значения базы данных в последний раз, когда был изменен термин таксономии.

Итак, для достижения вашей цели одним из решений является прохождение ваших сообщений и упорядочение их по дате или по последнему изменению. Во время цикла вы можете сохранить в переменной термин / категорию, назначенные сообщению. В конце у вас будет столько «свежих категорий», сколько захотите.

В приведенном ниже коде я использую таксономию типа продукта и продукта product_cat. U может захотеть изменить их на «post» и «category» соответственно.

 function display_terms_with_fresh_posts () {

     $ out = '';

     $ args = array (
         'post_type' => 'product', // ВЫБЕРИТЕ ТИП ПОЧТЫ !!!
         'posts_per_page' => -1,
         'order' => 'DESC',
         'orderby' => 'date' // Используйте 'date', чтобы получить последнее созданное или «измененное», чтобы получить последнее обновление.
     );

     $ q = новый WP_Query ($ args);

     // Устанавливаем var, который сохранит нужные термины.
     $ fresh_terms = array ();

     // Установите счетчик, который поможет нам получить столько же, сколько мы хотим.
     $ i = 0;

     if ($ q-> have_posts ()):
         while ($ q-> have_posts ()): $ q-> the_post ();

             $ post_id = get_the_ID ();
             $ taxonomy = 'product_cat';  // ВЫБЕРИТЕ ВАШУ ТАКСОНОМИЮ !!!

             $ post_terms = get_the_terms ($ post_id, $ taxonomy);

             if (! $ post_terms)
                 Продолжать;

             foreach ($ post_terms as $ t) {
                 if (! in_array ($ t-> term_id, $ fresh_terms)) {

                     // Здесь мы выбираем количество отображаемых категорий.  В этом случае я выбрал 5, поэтому var $ i должен быть как минимум больше 4.
                     если ($ i> 4) {
                         $ stop_loop = true;

                         ломать;
                     }
                     else {
                         $ fresh_terms [] = $ t-> term_id;

                         $ Я ++;
                     }

                 }

                 // ВАЖНЫЙ!  Если вы хотите получить все условия, назначенные каждому сообщению, вам нужно удалить перерыв отсюда.
                 // Это означает, что с использованием break мы получим только один термин для каждого сообщения.
                 ломать;
             }

             if (isset ($ stop_loop))
                 ломать;

         ENDWHILE;
     еще:
         $ out = __ ('Нет сообщений для этого типа сообщения были найдены.');
     ENDIF;

     if ($ fresh_terms) {

         foreach ($ fresh_terms as $ term_id) {
             $ term_data = get_term ($ term_id);
             $ term_link = get_term_link ($ term_id);

             $ out. = "$ term_data-> name";
         }

     }

     return $ out;

 }

 add_shortcode ('fresh_categories', 'display_terms_with_fresh_posts');

Теперь, когда вы добавили свой короткий код для отображения своих «свежих категорий», вы можете печатать категории так, как хотите, используя его на своих страницах в области администратора:

[fresh_categories]

Если вы хотите использовать его в php-файле, просто выполните:

echo do_shortcode("[fresh_categories]");

Обратите внимание на комментарии, которые я оставил по фрагменту кода. Это поможет вам в случае, если вы хотите немного изменить его.