Отключить ленту Комментариев


Я работаю на частном сайте, где комментарии должны быть скрыты. Я знаю, как удалить ленту комментариев из заголовка, но может ли кто-нибудь дать мне несколько инструкций о том, как полностью отключить ленту комментариев. Потому что все, что вам нужно сделать, это добавить /ленту/ в один пост, а затем вы сможете увидеть ленту комментариев.

Я попытался создать feed-atom-comments.php, и feed-rss2-comments.php, и это все равно не сработало.

Author: fuxia, 2012-03-17

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 );

Примечание: Я вообще не проверял это, я просто написал это прямо в поле для ответов.

 2
Author: mor7ifer, 2012-03-18 01:31:26

Отключите только каналы комментариев к отдельным публикациям

Альтернативная версия ответа 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-канала для моего сайта:

Screenshot of an error in the W3 feed validator: "Sorry - This feed does not validate. - line 111, column 19: wfw:commentRss must be a full and valid URL: (15 occurrences) [help]

Похоже, WP все еще вставляет комментарии RSS-тега в ленте, но поскольку эта лента отключена, она выдает ошибку.

RSS все еще работает, но я ищу решение, чтобы избавиться от него. Эта проблема с основным трафиком актуальна

 0
Author: jerclarke, 2020-09-21 15:24:14