wordpress поменять массово дату постов

wordpress поменять массово дату постов

Пользуюсь таким способом. создаём файл php, перед этим правим всего два числа, закидываем в корень сайта и обращаемся к нему через браузер. Даты постов изменены. Ни разу не запорол этим способом БД, единственное что посты раскидает в том же порядке что и идут и изменять по количеству/дням нельзя.

 

 

PHP код:

<?php
require_once(dirname(__FILE__).'/wp-load.php');

set_time_limit(300);
$wpdb->show_errors();

// диапазон раскидывания постов:
//  от (текущая_дата - $days_minus дней)
//  до (текущая дата + $days_plus дней)

$days_minus = 30;
$days_plus = 90;

// дальше магия

$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_plus.')
- (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');

Второй способ который юзаю – софтина TextKit, там всё проще, можно менять всё как душе угодно и есть бесплатная версия, которой в вашем случае более чем хватит.

 

http://webmasters.ru/forum/f134/kak-massovo-imenit%60-datu-publikacii-postov-wordpress-33177/

Leave a Comment

Your email address will not be published. Required fields are marked *

Shares