Как обновить дату постов 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 году.