Как обновить дату постов WordPress одним кликом

Чтобы обновить дату всех постов создайте файл php с любым именем и загрузите в корень сайта. Запустите его вписав имя в адресную строку браузера.

Обновить дату WordPress

Чтобы обновить дату всех постов создайте файл 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 — это количество дней, которые прибавляется с даты публикации поста.

18 581 2 UPD
Автор: Администрация сайта

2
Обсуждение

500
  Подписаться  
новые старые
Уведомлять
Anton

Отличный способ для массового обновления дат публикаций на Вордпрессе, для меня крайне полезная инструкция как для создателя блогов под управлением cms WordPress. Спасибо!

Антон Маркелов

Супер, спасибо, мне надо было массово апнуть дату модификации страниц (которых тысячи), поменял для себя тип записи на page и обновил. Странно, что мало толковых быстрых решений под подобную задачу.