通过RSS聚合Wordpress中的自定义字段

通过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=

我想知道我是否可以问一个Wordpress/RSS问题,我在这里找不到答案

试图使用FeedWordpress插件作为RSS聚合器,通过Wordpress中的RSS聚合帖子,原始博客中的每篇帖子都包含五个自定义字段,这些字段对其主题功能非常重要(原始博客和使用相同主题的聚合/接收博客)

原始RSS2提要不包括这些自定义字段,只有一个字段是enclosure,它是在默认rss提要模板(WP rss_enclosure中的函数)中定义的

这写在原始提要中,例如:

<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”;
}
}
这将向站点的主提要添加所有自定义字段名和值

注意,对于具有多个值的自定义字段,需要进行修改,因为上述操作仅适用于单值字段,而不适用于数组

所以

  • 在您的主站点(您的联合来源)上添加上述功能
  • 在从属站点(您要联合到的站点),假设您安装了FeedWordPress,请转到“联合”->
  • 单击RSS源的名称
  • 转到“自定义进刀设置”并插入工件