Intereting Posts
как фильтровать операторы сравнения данных (> = & <=) и диапазон между значениями с использованием WP REST API Отношение родителя и ребенка для пользовательских типов сообщений проблема с sql-запросом в плагине WordPress Можно ли игнорировать первый разрыв строки в предварительно отформатированном Div из короткого кода? Как добавить правильное Последнее обновление в сообщениях (the_modified_time) Добавьте мета-поле в список результатов для настраиваемого типа сообщений Какой порядок загрузки элементов WordPress? Сортировка по категориям с помощью HTML Выберите тег WP loop_post_meta ссылка петля Область администратора не загружается должным образом Использование внешнего файла с параметром WP_USE_THEMES, установленным на false, вызывает 404 Как получить имя файла прикрепленного файла, а не вложения Выполнить функцию, когда администратор изменяет роль пользователя Как создать форумы с помощью bbpress Plugin, которые могут просматриваться только при регистрации? WP перенаправлялся на install.php, я снова установил и заменил старые файлы на новый, но потерял все данные

как установить событие расписания для изменения метаданных всех сообщений еженедельно или ежемесячно?

до сих пор я добавил некоторые функции, чтобы установить количество просмотров просмотров в метатете post. Но я хочу больше: post_views_count_all: это мета-сообщение и сохранение всех просмотров сообщений; post_views_count_weekly: это мета-сообщение и сохранение сообщений в неделю, а затем очистка до 0; post_views_count_monthly: то же, что и выше, но очищается до 0 в месяц.

и ниже приведены мои коды:

function twenty_set_post_views($content) { $count_key = 'post_views_count'; $key_array = array( 'all', 'monthly', 'weekly', 'daily' ); if(is_single()) { global $post; $postID = $post->ID; foreach ($key_array as $key) { $count_key_t = $count_key . '_' . $key; $count = get_post_meta($postID, $count_key_t, true); if($count == '') { $count = 0; delete_post_meta($postID, $count_key_t); add_post_meta($postID, $count_key_t, '0'); }else{ $count++; update_post_meta($postID, $count_key_t, $count); } } } } add_action( 'the_content', 'twenty_set_post_views' ); 

Я бы использовал количество просмотров для просмотра списка популярных сообщений на прошлой неделе. Итак, как мне установить событие расписания для очистки post_views_count_weekly и post_views_count_monthly до 0 каждую неделю или каждый месяц?

wp_schedule_event () – это то, что вы ищете. С помощью этой функции вы можете создать cron jon, который WordPress будет выполнять на определенном интервале, который вы настраиваете. Эта функция должна быть вызвана только при активации плагина, и запланированное событие должно быть очищено при отключении плагина. Например:

  //Create the weekly and monthly interval add_filter('cron_schedules', 'cyb_cron_schedules'); function cyb_cron_schedules( $schedules ) { $schedules['weekly'] = array( 'interval' => 604800, //that's how many seconds in a week, for the unix timestamp 'display' => __('weekly') ); $schedules['monthly'] = array( 'interval' => 2592000, //that's how many seconds in a month (30 days), for the unix timestamp 'display' => __('monthly') ); return $schedules; } register_activation_hook( __FILE__, 'cyb_activation' ); function cyb_activation() { //Unix timestamp for first run of the event. time() for now $firstrun = time(); wp_schedule_event( $firstrun, 'weekly', 'cyb_clear_weekly_post_views' ); wp_schedule_event( $firstrun, 'monthly', 'cyb_clear_monthly_post_views' ); } register_deactivation_hook( __FILE__, 'cyb_deactivation' ); function cyb_activation() { wp_clear_scheduled_hook( 'cyb_clear_weekly_post_views' ); wp_clear_scheduled_hook( 'cyb_clear_monthly_post_views' ); } function cyb_clear_weekly_post_views() { //Set post_views_count_weekly to 0. Doing this for all post may need a lot of resources $posts = get_posts(array('numberposts' => -1) ); foreach($posts as $post) { update_post_meta($post->ID, 'post_views_count_weekly', 0); } } function cyb_clear_monthly_post_views() { //Set post_views_count_monthly to 0. Doing this for all post may need a lot of resources $posts = get_posts(array('numberposts' => -1) ); foreach($posts as $post) { update_post_meta($post->ID, 'post_views_count_monthly', 0); } } 

Примечание. Если вам нужно выполнить запланированное событие с точным интервалом, вы должны создать cron jon в своем wp_schedule_event() вместо использования wp_schedule_event() . Дополнительная информация в wp_schedule_event () .