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 решения.