通过RSS在Wordpress中联合自定义字段

时间:2011-09-02 13:25:58

标签: wordpress rss custom-fields rss2

我想知道我是否可以提出Wordpress / RSS问题,我无法在这里找到答案,

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

原始RSS2源不包括这些自定义字段,除了一个外围设备,它是在默认rss源模板(WP rss_enclosure中的功能)中定义的。

这是用原始Feed写的,例如:

<enclosure url="http://www.samplevideourl.flv" length="18554755" type="video/x-flv" />

尝试添加修改rss2-feed.php模板的其他自定义字段,以便它们显示在当前RSS2 Feed中每个细分的末尾,现在它们包括在内:例如:

...
<ratings_average>0</ratings_average>
<views>5</views>
</item>

但是,如果我更新联合发布的帖子,或删除帖子并使用feedwordpress再次获​​取修改后的Feed,则这些帖子都不会显示在联合帖子中。

有没有办法包含这些自定义字段,以便它们被feedwordpress识别?

基本上需要联合与原始帖子相同的格式,包括其所有自定义字段。

非常感谢

卡洛斯

1 个答案:

答案 0 :(得分:0)

有一个帖子涵盖了这个:https://wordpress.stackexchange.com/questions/3801/add-custom-fields-to-custom-post-type-rss

我在那里浓缩了答案以反映后来的改进(感谢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";
  }
}

这会将所有自定义字段名称和值添加到网站的主要Feed中。

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

所以,

  1. 在您的主站点(您正在联合FROM)上添加上述功能。
  2. 在Slave站点(您正在联合TO),假设您已安装FeedWordPress,请转到&#34; SYNDICATION&#34; - &GT;
  3. 点击RSS提要的名称
  4. 转到自定义Feed设置并插入部分