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



我想知道我是否可以问一个我在这里找不到答案的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>

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

是否有一种方法来包含这些自定义字段,使它们被feedwordpress识别?

基本上需要辛迪加相同的格式的帖子作为原始的,包括所有的自定义字段。

多谢卡洛斯

有一个线程覆盖这个: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";
  }
}

这将添加所有自定义字段名称和值到站点的主提要。

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

  1. 在您的主站(您从那里进行辛迪加)您添加上述功能。
  2. 在Slave站点(你要联合到的地方),假设你已经安装了FeedWordPress,转到"SYNDICATION"->
  3. 点击RSS源名称
  4. 进入自定义Feed设置并插入片段

最新更新