如何保护或禁用RSS提要?

时间:2014-09-28 作者:Jeroen

我正在尝试将WordPress设置为CMS。因此,我想禁用feed,因为它主要是一个安全的站点。我浏览了所有的设置页面,但没有找到调整或禁用提要的设置。所以我想我需要编写一个自定义函数或插件来实现这一点。但是怎么做呢?

关于feed的存在,我至少知道这些链接。。。

http://example.com/comments/feed/
http://example.com/feed/
因此,除了主要的问题之外,我也有点担心:上面的代码是否捕获了所有可用的feed?这真的是禁用所有提要的方法吗?

我知道插件支持在这里是离题的。然而,仅在某些上下文中/作为脚注,我使用了以下相关活动部分的组合:

WordPress 4GeneratePress 主题Groups 插件我已经使用该插件成功地保护了对页面和博客帖子的访问。然而,当未经身份验证的用户访问提要URL时,它仍会显示内容。因为插件似乎不能实现我想要的功能,我决定自己编写一些代码来实现这一点。

(我查看了外观>生成压力页面,但没有激活任何内容。我还查看了外观>自定义页面(以及所有设置),但也没有发现任何内容。最后,我已经反复阅读了“Groups”插件的选项,但没有找到任何选项。)

2 个回复
最合适的回答,由SO网友:Jeroen 整理而成

正如@kaiser在评论中指出的,您的问题与this question. 事实上,问题本身就有答案。要禁用所有提要,请添加以下代码。。。

function itsme_disable_feed() {
    wp_die( __( \'No feed available, please visit the <a href="\'. esc_url( home_url( \'/\' ) ) .\'">homepage</a>!\' ) );
}

add_action(\'do_feed\', \'itsme_disable_feed\', 1);
add_action(\'do_feed_rdf\', \'itsme_disable_feed\', 1);
add_action(\'do_feed_rss\', \'itsme_disable_feed\', 1);
add_action(\'do_feed_rss2\', \'itsme_disable_feed\', 1);
add_action(\'do_feed_atom\', \'itsme_disable_feed\', 1);
add_action(\'do_feed_rss2_comments\', \'itsme_disable_feed\', 1);
add_action(\'do_feed_atom_comments\', \'itsme_disable_feed\', 1);
。。。并激活该插件。这将阻止任何人访问提要操作。

请注意,以上只是示例代码,最好不要wp_die 但要重定向或改用404。

SO网友:Tom J Nowell

基于add_feed 函数,下面是remove_feed:

/**
 * Remove a feed type like /atom1/.
 *
 * @global WP_Rewrite $wp_rewrite
 *
 * @param string   $feedname Feed name.
 * @return string Feed action name.
 */
function remove_feed( $feedname ) {
        global $wp_rewrite;

        if ( in_array( $feedname, $wp_rewrite->feeds ) ) {
                $wp_rewrite->feeds = array_diff( $wp_rewrite->feeds, array( $feedname ) );
        }

        $hook = \'do_feed_\' . $feedname;

        // Remove default function hook
        remove_all_actions( $hook );
        add_action( $hook, $hook );

        return $hook;
}
用法:

remove_feed( \'rss\' );

结束

相关推荐

更改特定类别的RSS格式

有没有办法,in a single RSS feed, 不同类别的格式不同?例如,如果一篇文章很长,而且是技术性的,我只希望有一篇摘录(或者一篇带有链接的自定义文本),如果它很短,我希望把整个内容放在提要上。