cron — 12 (24) постов на каждый день
есть старый сайт на купленном домене .TK - начались проблемы с индексацией гугл из-за смены алгоритмов в феврале - все проверено опытным путем на тестовых сайтах. Домены .TK до февраля месяца индексировались как и остальные, а сейчас нет.
Хочу создать дубль сайта на домене COM и поменять полностью сео и медиа и имена и т.д..
Задачи
- Поменять всем постам статус из publish на future.
- (Главная) Публиковать или рандомно или каждый час запись. 10-15 постов в день.
Опыта с крон нет - интересует ваше мнение и примеры.
есть старое рабочее решение - но оно максимально примитивно - код ложится в корень и потом запускается по URL (запускал 2 года назад - последний раз) - он разобьет даты на выбранный диапазон, останется поменять статус постов (код даже это сделает сам) и всего
<?php
require_once(dirname(__FILE__).'/wp-load.php');
set_time_limit(300);
$wpdb->show_errors();
// диапазон раскидывания постов:
// от (текущая_дата - $days_minus дней)
// до (текущая дата + $days_plus дней)
$days_minus = 250;
$days_plus = 0;
// дальше магия
$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');
Я тут вижу 2 решения.