Как отсрочить публикацию в RSS ленте WordPress

Доброго времени суток!
Как мы знаем, RSS лента в WordPress обновляется в момент размещения новой статьи (поста). Всё бы хорошо, но в некоторых случаях данный алгоритм работы может сыграть злую шутку. К примеру, вы опубликовали новый материал, но через небольшой промежуток времени обнаружили в нём ошибку. Исправив недочёт, вы со спокойной душой продолжили заниматься своими делами. Однако, если до момента исправления статьи, к сайту обращался за новым материалом RSS клиент, то, скорее всего, он не учтёт внесённые впоследствии в статью правки и будет демонстрировать контент, в котором имеются помарки и ошибки. Это связанно особе6нностью кеширования данных, что применяется в некоторых RSS клиентах.
И ещё один негативный пример оперативного обновления RSS потока. Некоторые недобросовестные администраторы сайтов используют RSS для воровства контента. Они используют автоматизированное программное обеспечение, в задачу которого входит постоянное сканирование RSS лент с сайтов. Как только такой «сканер» обнаруживает новый материал, он его копирует и размещает на ресурсах, что принадлежат недобросовестному создателю сайтов.
И если поисковая система (Яндекс, Google и т.д.) не успела обойти ваш сайт и «увидеть» размещённую новую статью, но при этом просканировала таковую на том ресурсе, который оперативно скопировал вашу статью, то в итоге пострадаете именно вы и ваш сайт.
Как же избежать всех этих возможных негативных последствий? А избежать их достаточно просто! Необходимо ввести отсрочку публикации нового материала в RSS потоке.
Отсрочка публикации новой статьи в RSS
Для этого мы используем небольшой код, который впишем в один из файлов. Это классический подход к добавлению функционала на сайте под управление WordPress.
Сайм файл носит имя functions.php и находится он в директории, где находятся темы (файлы дизайна сайта). Типовой путь: …/wp-content/themes/<имя используемой вами темы>/functions.php
Открыв его на редактирование, впишите код:
function delay_rss_feed($where) { global $wpdb; if (is_feed()) { $now = gmdate('Y-m-d H:i:s'); $wait = '60'; $device = 'MINUTE'; $where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait "; } return $where; } add_filter('posts_where', 'delay_rss_feed');
Цифра 60 в приведённом коде означает, что задержка будет осуществлена на шестьдесят минут, т.е. ровно один час. По истечении этого времени в RSS ленте появится статья, что была опубликована на сайте.
Вы можете поменять время задержки на своё усмотрение. На завершающем этапе не забудьте сохранить файл с вписанным кодом.
Вот и всё. Пользуйтесь, а также не забывайте подписываться на новые материалы, что выходят на сайте WPuse.ru