Как обновить дату постов 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 629 2 UPD
Автор: Администрация сайта

2
Обсуждение

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

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