如何根据此页面上的内容创建rss提要?

时间:2014-12-20 作者:user2059370

所以我用php创建了一个gmail rss提要,并将其放置在自定义页面中。我使用了以下片段:

 function checkGmail($username, $password)
 { 
 $url = "https://mail.google.com/mail/feed/atom"; 

 $curl = curl_init();
 curl_setopt($curl, CURLOPT_URL, $url);
 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($curl, CURLOPT_USERPWD, $username . ":" . $password);
 curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
 curl_setopt($curl, CURLOPT_ENCODING, "");
 $mailData = curl_exec($curl);
 curl_close($curl);

 return $mailData;
 }

 header(\'Content-Type:text/xml; charset=UTF-8\');
 $feed = checkGmail("[email protected]", "password");
 echo $feed;
它在我的站点上输出xml。太棒了然后我试着用这个创建一个经过验证的提要,这就是我被绊住的地方。我尝试通过以下方式创建自定义rss提要:

 add_action( \'after_setup_theme\', \'my_rss_template\' );
/**
* Register custom RSS template.
*/
function my_rss_template() {
add_feed( \'short\', \'my_custom_rss_render\' );
}

/**
* Custom RSS template callback.
*/
function my_custom_rss_render() {
get_template_part( \'feed\', \'short\' );
}
然后我试着把这一切都说出来http://website.com/?feed=feed-short 但它说了一些不正确的feedtemplate。如果我通过slug导航到自定义页面,它会在自定义页面上输出xml。那么我在这里做什么呢?

1 个回复
SO网友:kaiser

你可以看看

ABSPATH . WPINC . \'feed-*.*\';
查看示例。WP core具有以下协议的馈送温度:

编写插件时,您可以将以下快速测试插件作为基础。它添加了一个提要名称custom-feed 到提要列表。

<?php 
/* Plugin Name: (WPSE) #172796 Custom Feed */

add_action( \'init\', function()
{
    add_feed( \'custom-feed\', function()
    {
        /** @var \\WP_Query $wp_query */
        global $wp_query;

        // Custom conditions when to output the feed - and when not
        if ( \'foo\' !== get_query_var( \'name\' ) )
            return;

        load_template( plugin_dir_path( __FILE__ ).\'templates/feed-rss2.php\' );
    } );
} );
要快速查看默认提要,只需将其转储

var_dump( $GLOBALS[\'wp_rewrite\']->feeds );
当您激活上述测试插件时,您应该发现custom-feed 作为数组中的最后一个条目。

在任何回调中,您都应该检查您是否正在处理新的自定义提要:

$wp_query->is_feed( [ \'custom-feed\', ] );
要获取有效的提要,您必须设置header. Core的功能如下:

header( sprintf( 
    \'Content-Type: %s; charset=%s\',
    feed_content_type( \'rss-http\' ),
    get_option( \'blog_charset\' )
), true );
然后是实际的XML开头标记:

echo \'<?xml version="1.0" encoding="\'.get_option(\'blog_charset\').\'"?\'.\'>\';
之后,有一个地方可以让插件挂接:

do_action( \'rss_tag_pre\', \'rss2\' );
最后是<rss version="2.0" ... 标记打开和另一个钩子以添加自定义名称空间

do_action( \'rss2_ns\' );
这个清单不胜枚举。你能做的最好的事情就是把核心文件作为你自己feed的蓝图(将它们复制/粘贴到你的插件并改变输出)。

结束

相关推荐

设置RSS提要的语言

设置rss提要语言的最简单/最简单的方法是什么。目前,我的提要xml中的字段为空,如下所示 <language></language> 我希望它看起来像<language>en-US</language> 有没有关于如何轻松实施的帮助?