Как обновить дату постов WordPress одним кликом
Чтобы обновить дату всех постов создайте файл php с любым именем и загрузите в корень сайта. Запустите его вписав имя в адресную строку браузера
Чтобы обновить дату всех постов создайте файл php с любым именем и загрузите в корень сайта. Запустите его вписав имя в адресную строку браузера.
Как это работает?
Скрипт считывает текущую дату. Отнимает от текущей даты указанное количество дней.
<?php require_once(dirname(__FILE__).'/wp-load.php'); set_time_limit(300); $wpdb->show_errors(); // диапазон раскидывания постов: // от (текущая_дата - $days_minus дней) // до (текущая дата + $days_plus дней) $days_minus = 50; // дальше магия $sql = 'SELECT `ID` FROM `'.$wpdb->prefix.'posts` WHERE `post_type`="post" AND (`post_status`="future" OR `post_status`="publish") '; if ( $posts = $wpdb->get_results($sql) ) { // Меняем дату у постов foreach ($posts as $post) { $sql = 'UPDATE `'.$wpdb->prefix.'posts` SET `post_date`= DATE_ADD( FROM_DAYS( FLOOR( TO_DAYS(NOW()) - (RAND()*'.$days_minus.') ) ), INTERVAL (FLOOR(RAND()*86400)) SECOND ), `post_date_gmt`=`post_date`, `post_modified`=`post_date`, `post_modified_gmt`=`post_date` WHERE `id`=%d LIMIT 1 '; $psql = $wpdb->prepare($sql, $post->ID); $wpdb->query($psql); } // Обновляем статусы постов $sql = 'UPDATE `'.$wpdb->prefix.'posts` SET `post_status`="future" WHERE `post_date`>NOW() AND `post_type`="post" AND (`post_status`="future" OR `post_status`="publish") '; $wpdb->query($sql); $sql = 'UPDATE `'.$wpdb->prefix.'posts` SET `post_status`="publish" WHERE `post_date`<=NOW() AND `post_type`="post" AND (`post_status`="future" OR `post_status`="publish") '; $wpdb->query($sql); } die('Complete'); ?>
Затем, чтобы обновить даты комментариев к постам, создайте по аналогии еще один файл php и запустите его из браузера.
Даты комментариев считаются от даты каждого поста.
<?php require_once(dirname(__FILE__).'/wp-load.php'); set_time_limit(300); $wpdb->show_errors(); // дальше магия $sql = 'UPDATE `'.$wpdb->prefix.'comments` SET `comment_date` = DATE_ADD( FROM_DAYS( FLOOR( TO_DAYS( (SELECT `post_date` FROM `wp_posts` WHERE `ID`=`wp_comments`.`comment_post_ID`)) + (RAND()*15) )), INTERVAL (FLOOR(RAND()*86400)) SECOND ), `comment_date_gmt` = `comment_date` '; $wpdb->query($sql); die('Complete'); ?>
15 — это количество дней, которые прибавляется с даты публикации поста.
Этот материал впервые был опубликован 5 июня 2017 года. Актуальность информации подтверждена 16 января 2024 году.