How to get feed for pages?

时间:2015-11-19 作者:Kelly

我有一个关于WordPress提要的问题。

我知道默认提要:

http://www.example.com/feed/
是为post 岗位类型。

但是,我想创建一个新的提要,只针对page 岗位类型,例如。

http://www.example.com/kellyspagefeed/
我不想覆盖默认值。

谁能告诉我how to get feed for pages?

1 个回复
SO网友:birgire

我们可以创建一个可从此处访问的自定义提要:

example.tld/kellyspagefeed/
并且只显示页面,而不显示帖子。

我们可以试着重写最近的答案here, 使用以下演示插件:

<?php
/**
 * Plugin Name: Kelly\'s Page Feed
 * Description: Accessible from the /kellyspagefeed slug
 * Plugin URI:  https://wordpress.stackexchange.com/a/209244/26350
 */

// Add the custom rss2 feed   
add_action( \'init\', \'wpse_init\' );

// Set the \'page\' post type for the custom feed
add_action( \'pre_get_posts\', function( \\WP_Query $q )
{
    if( $q->is_feed( \'kellyspagefeed\' ) )
        $q->set( \'post_type\', \'page\' );
} );

// Add our rewrite rules and flush only during plugin activation
register_activation_hook( __FILE__, \'wpse_init\' );

// House cleaning during plugin deactivation - remove our rewrite rules
register_deactivation_hook( __FILE__, \'flush_rewrite_rules\' );

// Helper function
function wpse_init()
{
    add_feed( \'kellyspagefeed\', \'do_feed_rss2\' );

    if( \'init\' !== current_filter() )
        flush_rewrite_rules();  
}
请注意:

register_activation_hook( __FILE__, \'flush_rewrite_rules\' );
在这里行不通,因为我们必须刷新重写规则after 我们添加了自定义提要重写规则add_feed().

这就是为什么我介绍wp_init() 助手函数:

register_activation_hook( __FILE__, \'wpse_init\' );
确保重写规则不会在init 钩这种刷新非常昂贵,所以我们只想在激活或停用演示插件时进行。

希望你能根据自己的需要调整,

相关推荐

如何在不剥离IFRAME代码的情况下获得SimplePie Fetch_Feed?

我正在我的插件中获取一个远程提要,有些条目有我想要保留的iframe代码。然而,SimplePiefetch_feed 不断地把它剥下来。以下是我的代码和我已经尝试过的内容:kses_remove_filters(); # remove kses filters but SimplePie strips codes anyway $rss = fetch_feed( \'http://www.someblog.com/feed/\' ); $rss_items = $rss->get