Этот прием необходим для поддержания на сайте видимости активности, а также оказывает некоторое влияние на ИИ оптимизацию сайта.
Данный скрипт позволяет по крон-задаче запускать скрипт, который меняет дату обновления записи wordpress на случайную.
Период кол-ва дней можно регулировать.Данный скрипт пока что протестирован на шаблоне KADENCE и шаблоне от zaplata.ru – ДЗЕН ВП
1.Добавляем в functions.php
/** * Random Post Update Date Modifier (Исправленная версия) */ // 1. Гарантированная регистрация крона при каждой загрузке (если еще не зарегистрирован) add_action('init', 'ensure_random_date_cron_scheduled'); function ensure_random_date_cron_scheduled() { if (!wp_next_scheduled('random_update_dates_daily')) { wp_schedule_event(time(), 'daily', 'random_update_dates_daily'); } } // 2. Хук выполнения задачи add_action('random_update_dates_daily', 'execute_random_date_update'); function execute_random_date_update() { global $wpdb; // Путь к файлу лога для проверки работы $log_file = WP_CONTENT_DIR . '/cron-date-update.log'; $log_message = date('Y-m-d H:i:s') . " - Крон запущен. "; // Получаем ID всех опубликованных записей (только ID, чтобы не грузить память) $post_ids = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'post' AND post_status = 'publish'"); if (empty($post_ids)) { file_put_contents($log_file, date('Y-m-d H:i:s') . " - Записи не найдены\n", FILE_APPEND); return; } $updated_count = 0; $today = current_time('timestamp'); // Приостанавливаем обновление кеша для ускорения процесса на шаред-хостинге wp_suspend_cache_invalidation(true); foreach ($post_ids as $post_id) { // Генерируем случайное число от 1 до 5 для КАЖДОЙ записи отдельно $random_days = wp_rand(1, 3); $new_timestamp = $today - ($random_days * DAY_IN_SECONDS); $new_date = date('Y-m-d H:i:s', $new_timestamp); $new_date_gmt = get_gmt_from_date($new_date); // Прямое обновление в базе данных (самый быстрый и надежный способ) $result = $wpdb->update( $wpdb->posts, array( 'post_modified' => $new_date, 'post_modified_gmt' => $new_date_gmt ), array('ID' => $post_id), array('%s', '%s'), array('%d') ); if ($result !== false) { $updated_count++; clean_post_cache($post_id); } } // Возвращаем обновление кеша wp_suspend_cache_invalidation(false); // Записываем результат в лог $log_message .= "Обновлено записей: {$updated_count} из " . count($post_ids) . "\n"; file_put_contents($log_file, $log_message, FILE_APPEND); } // 3. Кнопка для ручного запуска и проверки (внешний вид в админке) add_action('admin_menu', 'add_random_date_admin_menu'); function add_random_date_admin_menu() { add_management_page( 'Рандомизация дат записей', 'Рандомизация дат', 'manage_options', 'randomize-post-dates', 'render_random_date_admin_page' ); } function render_random_date_admin_page() { if (isset($_POST['run_date_update_now']) && check_admin_referer('run_date_update_nonce')) { execute_random_date_update(); echo '<div class="notice notice-success is-dismissible"><p>Готово! Даты обновлены. Проверьте файл wp-content/cron-date-update.log</p></div>'; } // Читаем последние 5 строк лога для отображения в админке $log_file = WP_CONTENT_DIR . '/cron-date-update.log'; $log_content = file_exists($log_file) ? file_get_contents($log_file) : 'Лог пока пуст.'; $last_logs = implode("\n", array_slice(explode("\n", trim($log_content)), -5)); ?> <div class="wrap"> <h1>Рандомизация дат обновления записей</h1> <p>Этот инструмент изменяет дату модификации (post_modified) всех опубликованных записей на случайную величину от 1 до 5 дней назад от текущего момента.</p> <form method="post" style="margin-top: 20px;"> <?php wp_nonce_field('run_date_update_nonce'); ?> <input type="submit" name="run_date_update_now" class="button button-primary button-hero" value="Запустить обновление прямо сейчас"> </form> <div style="margin-top: 40px; background: #f0f0f1; padding: 15px; border-left: 4px solid #2271b1;"> <h3>Последние записи из лога выполнения:</h3> <pre style="white-space: pre-wrap; font-family: monospace;"><?php echo esc_html($last_logs); ?></pre> </div> </div> <?php }
В разделе Инструменты – Рандомизация дат
можно теперь в ручную запускать рандом записей обновления
Для автоматической рандомизации я добавляю крон задачу
например каждые 3 дня запуска. крон
т.к. у меня в скрипте условие wp_rand(1, 3); меняет как раз каждые 3 дня дату рандомно.крон задача:
curl -s 'https://aeoradar.ru/wp-cron.php?doing_wp_cron' >/dev/null 2>&1
Как вывести дату изменения/обновления записи в админке в блоке Опубликовать
https://zaplata.ru/forum/scripts/vyvesti-datu-izmeneniya-obnovleniya-zapisi-opublikovat