仅对RSS提要使用自定义帖子类型

时间:2014-09-23 作者:Dan

我接到一位客户的请求,这让我有点头疼!他们想要一个RSS提要,显示网站上任何地方都没有的内容。

我注册了一个新的自定义帖子类型(精简代码);

$alert_args = array( 
    \'public\' => false, 
    \'show_ui\' => true,
    \'label\' => \'Alerts\', 
    \'has_archive\' => true, 
    \'supports\' => array( \'title\', \'editor\' ),
);
register_post_type( \'alerts\', $alert_args );
为了让RSS提要正常工作,我似乎需要public 参数设置为TRUE 但我不希望这些帖子被谷歌编入索引或被网站访问者使用。你知道我如何让RSS提要自己工作吗?

谢谢,丹。

---编辑---

请注意,最后我得到了零钱get_post_type()get_query_var( \'post_type\' ) 因为前者不适用于存档模板页。见规范;

if( \'alerts\' === get_query_var( \'post_type\' ) && ! is_feed() )
{
    $GLOBALS[ \'wp_query\' ]->set_404();
    status_header( 404 );
    nocache_headers();
}   

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

你可以尝试强制404 使用this 方法:

/**
 * Force 404 on all "alerts" custom post type pages except for the feed
 *
 * @see https://wordpress.stackexchange.com/a/162303/26350
 */

add_action( \'template_redirect\', function() {
    if( \'alerts\' === get_post_type() && ! is_feed() )
    {
        $GLOBALS[\'wp_query\']->set_404();
        status_header( 404 );
        nocache_headers();
    }   
} );
使用以下设置:

$alert_args = array( 
    \'public\'              => true, 
    \'show_ui\'             => true,
    \'has_archive\'         => true, 
    \'exclude_from_search\' => true,
    \'label\'               => \'Alerts\', 
    \'supports\'            => array( \'title\', \'editor\' ),
);

register_post_type( \'alerts\', $alert_args );
只允许访问alerts 自定义帖子类型。

您可能还想考虑添加一个额外的! is_user_logged_in() 如果要允许登录的用户查看警报,请选中,或者! current_user_can( \'some_capability\' ) 对于某些用户的能力要求。

结束

相关推荐

WP URL以获取带有帖子全文的RSS

我需要卷曲wordpress站点并获取rss格式:1。所有类别2。对于一个类别,所有帖子。它们需要包含标题和全文(而不是描述)。给定我的站点是somewpsite。com,如何编写上述需要的2个URL?非常感谢。