通过RSS聚合Wordpress中的自定义字段
我想知道我是否可以问一个Wordpress/RSS问题,我在这里找不到答案 试图使用FeedWordpress插件作为RSS聚合器,通过Wordpress中的RSS聚合帖子,原始博客中的每篇帖子都包含五个自定义字段,这些字段对其主题功能非常重要(原始博客和使用相同主题的聚合/接收博客) 原始RSS2提要不包括这些自定义字段,只有一个字段是enclosure,它是在默认rss提要模板(WP rss_enclosure中的函数)中定义的 这写在原始提要中,例如:通过RSS聚合Wordpress中的自定义字段,wordpress,rss,custom-fields,rss2,Wordpress,Rss,Custom Fields,Rss2,我想知道我是否可以问一个Wordpress/RSS问题,我在这里找不到答案 试图使用FeedWordpress插件作为RSS聚合器,通过Wordpress中的RSS聚合帖子,原始博客中的每篇帖子都包含五个自定义字段,这些字段对其主题功能非常重要(原始博客和使用相同主题的聚合/接收博客) 原始RSS2提要不包括这些自定义字段,只有一个字段是enclosure,它是在默认rss提要模板(WP rss_enclosure中的函数)中定义的 这写在原始提要中,例如: <enclosure url=
<enclosure url="http://www.samplevideourl.flv" length="18554755" type="video/x-flv" />
尝试添加修改rss2-feed.php模板的其余自定义字段,以便它们显示在当前rss2提要中每个段的末尾,现在包括它们,例如:
...
<ratings_average>0</ratings_average>
<views>5</views>
</item>
。。。
0
5.
但是,如果我更新了辛迪加的帖子,或者删除了帖子并用feedwordpress再次获取修改过的提要,那么辛迪加的帖子中不会显示这些内容
有没有办法包含这些自定义字段以便feedwordpress能够识别它们
基本上需要联合与原始文章相同的格式,包括其所有自定义字段
非常感谢
卡洛斯有一条线索涵盖了这一点: 我将答案浓缩在这里,以反映后来的改进(感谢MikeSchinkel、prettyboymp和Acts7) 将此添加到主题的functions.php中:
/* IN ORDER TO VALIDATE you must add namespace */
add_action('rss2_ns', 'my_rss2_ns');
function my_rss2_ns(){
echo 'xmlns:mycustomfields="'. get_bloginfo('wpurl').'"'."\n";
}
add_action('rss2_item', 'yoursite_rss2_item');
function yoursite_rss2_item() {
if (get_post_type()=='my_custom_post_type') {
$fields = array( 'field1', 'field2', 'field3' );
$post_id = get_the_ID();
foreach($fields as $field)
if ($value = get_post_meta($post_id,$field,true))
echo "<mycustomfields:{$field}>{$value}</mycustomfields:{$field}>\n";
}
}
/*要进行验证,必须添加命名空间*/
添加操作(“rss2”、“我的rss2”);
函数my_rss2_ns(){
echo'xmlns:mycustomfields=“”.get_bloginfo('wpurl')。“\n”;
}
添加操作(“rss2项目”、“您的站点”rss2项目);
函数yourssite\u rss2\u项(){
if(get_post_type()='my_custom_post_type'){
$fields=数组('field1','field2','field3');
$post_id=获取_id();
foreach($fields作为$field)
如果($value=get_post_meta($post_id,$field,true))
回显“{$value}\n”;
}
}
这将向站点的主提要添加所有自定义字段名和值
注意,对于具有多个值的自定义字段,需要进行修改,因为上述操作仅适用于单值字段,而不适用于数组
所以