Intereting Posts
Создание персонализированного типа сообщений для публикации фотографий Как я могу вернуться к показу кешированных страниц, когда соединение с базой данных не доступно? Расписание на каждую секунду в wordpress Ввод динамических строк в URL-адресах как заставить кеширование wordpress admin Как изменить статус сообщения в режиме ожидания? Изменение внешнего вида текста короткого кода внутри редактора На сайте WordPress 35K спам-изображения Сохранение настраиваемых полей для WP_Query для извлечения Я хочу разрешить использование атрибута data-flw в ссылках в комментариях Почему WordPress запрашивает информацию о FTP, когда он может писать на файловый сервер? Как сделать Div Container 100% шириной только на главной странице сайта? wp_list_categories () Исключить все категории кроме одного Как я могу применить WP-фильтр для определенной версии плагина Миниатюры, созданные «add_image_size», не удаляются при удалении носителя

Изменить категорию сообщений на основе последних сообщений

У меня есть настраиваемое поле, называемое post_views_count, в котором хранятся представления каждого сообщения в моем блоге. Я хотел бы использовать эти взгляды, чтобы определить, к какой категории относятся должности. Вот что я хотел бы сделать:

  1. Поместите последние 50 сообщений в группы по 10.
  2. Найдите, какая должность в каждой группе имеет самые высокие мнения и переместит их в большую категорию.
  3. Найдите среднее количество оставшихся 9 сообщений в каждой группе.
  4. Сообщения, которые ниже среднего по каждой группе, переносятся в небольшую категорию, а сообщения выше среднего переносятся в среднюю категорию.

Это должно привести к 1 большой должности, 4 или 5 средних и 4 или 5 небольших должностей для каждой группы. Этот процесс будет выполняться в cron каждый час, чтобы обновлять категории, а также запускать каждый раз, когда создается новый пост. Когда сообщение выходит из последних 50, оно просто остается той категорией, в которой он был последним назначен.

Я искал похожие решения, и я не могу много найти. Любая помощь приветствуется.

Solutions Collecting From Web of "Изменить категорию сообщений на основе последних сообщений"

Я взял свободу игнорировать шаг № 1 и шаг № 3, поскольку они, похоже, являются частью вашего основного подхода к достижению вашей цели и не являются вашей целью. Я считаю, что вы можете достичь своей цели более простым способом.

function assign_last_posts_cat_by_views( $posts_number = 50, $delete_last_posts_transient = true ) { if ( true === $delete_last_posts_transient ) { delete_transient( 'last_posts' ); } if ( ! $posts = get_transient( 'last_posts' ) ) { $args = array( 'numberposts' => $posts_number ); $posts = get_posts( $args ); // Gets your posts... set_transient( 'last_posts', $posts, 60*60*24 ); // Caches the result... } $post_views = array(); foreach ( $posts as $post ) { $post_views[ $post->ID ] = get_post_meta( $post->ID, 'post_views_count', true ); // Gets each post views count... } arsort( $post_views, SORT_NUMERIC ); // Sorts views in desc order... $post_number = 0; foreach ( $post_views as $post_id => $views ) { if ( $post_number < 5 ) { $term_slug = 'large'; } elseif ( $post_number < 30 ) { $term_slug = 'medium'; } else { $term_slug = 'small'; } $term = get_term_by( 'slug', $term_slug, 'category' ); // Gets term and caches it... wp_set_post_terms( $post_id, array( $term->term_id ), 'category' ); // Programatically assignes the category to the post... $post_number++; } } 

Теперь, как задание CRON, каждый час обновлять категории ваших последних сообщений без запуска нового почтового запроса, вы можете сделать что-то вроде этого …

 add_action( 'hourly_process', 'assign_last_posts_cat_by_views', 10, 2 ); wp_schedule_event( time(), 'hourly', 'hourly_process', array( 50, false ) ); 

И для запуска процесса, когда сообщение сохраняется …

 add_action( 'save_post', 'assign_last_posts_cat_by_views' );