Отключить ленту Комментариев
Я работаю на частном сайте, где комментарии должны быть скрыты. Я знаю, как удалить ленту комментариев из заголовка, но может ли кто-нибудь дать мне несколько инструкций о том, как полностью отключить ленту комментариев. Потому что все, что вам нужно сделать, это добавить /ленту/ в один пост, а затем вы сможете увидеть ленту комментариев.
Я попытался создать feed-atom-comments.php, и feed-rss2-comments.php, и это все равно не сработало.
2 answers
Что-то подобное должно сработать.
function wpse45941_disable_feed( $comments ) {
if( $comments ) {
wp_die( 'No feed available' );
}
}
add_action('do_feed', 'wpse45941_disable_feed',1 );
add_action('do_feed_rdf', 'wpse45941_disable_feed',1 );
add_action('do_feed_rss', 'wpse45941_disable_feed',1 );
add_action('do_feed_rss2', 'wpse45941_disable_feed',1 );
add_action('do_feed_atom', 'wpse45941_disable_feed',1 );
Примечание: Я вообще не проверял это, я просто написал это прямо в поле для ответов.
Отключите только каналы комментариев к отдельным публикациям
Альтернативная версия ответа mor7ifer, эта только отключает каналы комментариев для каждой публикации, а не канал комментариев для всего сайта (проверив наличие is_single()
перед выполнением wp_die()
).
Он также использует 410
код ошибки, который означает GONE
и кажется подходящим для этого варианта использования (по крайней мере, для меня, где эти URL-адреса уже существовали и индексируются, и я хочу недвусмысленно сказать Google и друзьям, чтобы прекратить индексирование).
function wpse45941_disable_feed( $comments ) {
if( $comments and is_single() ) {
wp_die( 'Feeds for comments on single posts have been disabled.', 410 );
}
}
add_action('do_feed', 'wpse45941_disable_feed',1 );
add_action('do_feed_rdf', 'wpse45941_disable_feed',1 );
add_action('do_feed_rss', 'wpse45941_disable_feed',1 );
add_action('do_feed_rss2', 'wpse45941_disable_feed',1 );
add_action('do_feed_atom', 'wpse45941_disable_feed',1 );
Отключить все каналы комментариев
Вот тот же код со статусом HTTP 410
, но он также отключит канал комментариев по всему сайту (и покажет соответствующее сообщение):
function wpse45941_disable_feed( $comments ) {
if( $comments ) {
wp_die( 'Feeds for comments have been disabled.', 410 );
}
}
add_action('do_feed', 'wpse45941_disable_feed',1 );
add_action('do_feed_rdf', 'wpse45941_disable_feed',1 );
add_action('do_feed_rss', 'wpse45941_disable_feed',1 );
add_action('do_feed_rss2', 'wpse45941_disable_feed',1 );
add_action('do_feed_atom', 'wpse45941_disable_feed',1 );
Примечание: Это не исправляет <item>
для каждого сообщения в обычной RSS-ленте
При дальнейшей проверке я обнаружил следующую ошибку при проверке основного (сообщений) RSS-канала для моего сайта:
Похоже, WP все еще вставляет комментарии RSS-тега в ленте, но поскольку эта лента отключена, она выдает ошибку.
RSS все еще работает, но я ищу решение, чтобы избавиться от него. Эта проблема с основным трафиком актуальна