Ведение контента на сайте требует не только создания новых статей, но и управления уже опубликованными материалами. Особенно важным становится выделение старых записей, чтобы пользователи и поисковые системы понимали, что статья устарела или требует обновления. В этой статье я подробно расскажу, как автоматически отмечать старые посты в WordPress с помощью кода и плагинов, а также дам полезные советы по оптимизации работы с такими записями.
Почему важно автоматически отмечать старые записи в WordPress
Отметка старых постов помогает не только читателям, но и администрации сайта. С помощью такой метки можно:
- Уведомлять посетителей, что информация может быть устаревшей;
- Автоматизировать процесс обновления контента;
- Улучшить SEO, показывая поисковикам структуру и актуальность материалов;
- Упрощать навигацию по сайту, выделяя свежий и старый контент.
Особенно это актуально для новостных, образовательных и журнал-ориентированных сайтов, например, таких как journalx.ru.
Как определить, что пост считается «старым»
Для начала нужно четко определить критерии, по которым запись считается старой. Чаще всего используют:
- Возраст записи — например, старше 6 месяцев или года;
- Дата последнего обновления — если статья не обновлялась длительное время;
- Статистика просмотров — низкая активность может указывать на устаревший материал.
В этой статье возьмем за основу возраст записи — более 6 месяцев.
Автоматическое добавление метки "Старое" с помощью кода
Для автоматической отметки старых постов можно использовать пользовательскую функцию, которая будет запускаться при сохранении записи или через CRON для массового обновления. Рассмотрим функцию journalx_mark_old_posts, которая добавляет метку "Старое" к записям старше 6 месяцев.
function journalx_mark_old_posts() {
$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'date_query' => array(
array(
'before' => '6 months ago',
),
),
'tax_query' => array(
array(
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => 'staryj',
'operator' => 'NOT IN',
),
),
'fields' => 'ids',
);
$old_posts = get_posts($args);
foreach ($old_posts as $post_id) {
wp_set_post_tags($post_id, 'staryj', true); // добавляем тег 'staryj'
}
}
// Запускаем функцию один раз
journalx_mark_old_posts();В этом примере мы используем тег с слагом staryj. Если такого тега нет, его можно создать вручную в админке WordPress или добавить код для автоматического создания.
Автоматизация с помощью WP-Cron
Чтобы функция запускалась регулярно, например, раз в неделю, используем WP-Cron:
function journalx_schedule_old_posts_tagging() {
if (!wp_next_scheduled('journalx_mark_old_posts_event')) {
wp_schedule_event(time(), 'weekly', 'journalx_mark_old_posts_event');
}
}
add_action('wp', 'journalx_schedule_old_posts_tagging');
add_action('journalx_mark_old_posts_event', 'journalx_mark_old_posts');Теперь WordPress автоматически будет отмечать старые посты тегом "Старое" раз в неделю.
Использование плагинов для автоматической отметки старых записей
Если не хочется писать код, можно воспользоваться готовыми плагинами. Вот несколько вариантов:
- Auto Post Scheduler — позволяет автоматически обновлять старые посты, что можно использовать для отметки;
- Post Expirator — с помощью него можно задать дату истечения для публикации и автоматически менять статус или метки;
- Clearfy Pro — плагин оптимизации, который среди прочего умеет управлять метаданными и статусами записей, с возможностью автоматизации.
Плагин Clearfy Pro особенно подходит, если вы хотите объединить автоматизацию с оптимизацией сайта.
Как визуально выделить старые записи на сайте
После того, как старые записи помечены тегом или категорией, стоит сделать их визуально отличимыми для пользователей. Это можно сделать добавлением CSS-стилей или через изменение шаблона темы.
Пример CSS для выделения постов с тегом "Старое"
.post-tag-staryj {
background-color: #f8d7da;
border-left: 5px solid #721c24;
padding: 10px;
margin-bottom: 20px;
}
Этот стиль можно подключить в файл стилей темы или через кастомизатор.
Добавление метки в шаблон вывода поста
В файле single.php или шаблоне вывода записей можно вывести специальный знак рядом с заголовком, если у записи есть тег "Старое":
if (has_tag('staryj')) {
echo '<span class="old-post-label">[Старое]</span>';
}Так пользователи сразу увидят, что материал требует внимания или обновления.
Обновление и снятие отметки с записей после доработки
Если вы обновили статью, логично убрать метку "Старое". Для этого можно добавить функцию, которая будет удалять тег при обновлении записи:
function journalx_remove_old_tag_on_update($post_id) {
if (get_post_type($post_id) !== 'post') {
return;
}
$post_date = get_the_date('U', $post_id);
$post_modified = get_the_modified_date('U', $post_id);
// Если статья обновлена недавно (например, в последние 3 месяца), удаляем тег
if (($post_modified - $post_date) > 0 && ($post_modified > strtotime('-3 months'))) {
$tags = wp_get_post_tags($post_id, array('fields' => 'slugs'));
if (in_array('staryj', $tags)) {
wp_remove_object_terms($post_id, 'staryj', 'post_tag');
}
}
}
add_action('save_post', 'journalx_remove_old_tag_on_update');Таким образом, метка будет сниматься автоматически после обновления.
Выводы и рекомендации
Автоматическая отметка старых постов — простой и эффективный способ управлять контентом на сайте. Используя приведенный код и плагины, вы сможете:
- Облегчить навигацию для посетителей;
- Поддерживать актуальность информации;
- Улучшить SEO-показатели;
- Автоматизировать рутинные задачи.
Для сайтов с частым обновлением контента, таких как журнал news или блог, это особенно полезно.
Если хотите более продвинутую автоматизацию и дополнительные возможности, рекомендую обратить внимание на Clearfy Pro, который позволит настроить множество параметров управления контентом без лишнего кода.