1

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

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

原始的 RSS2 提要不包括这些自定义字段,除了一个,即附件,这是在默认 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 再次获取修改后的提要,这些都不会显示在联合帖子中。

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

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

非常感谢

卡洛斯

4

1 回答 1

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";
  }
}

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

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

所以,

  1. 在您的主站点(您正在从那里联合)您添加上述功能。
  2. 在从站站点(您要联合到的地方)上,假设您安装了 FeedWordPress,请转到“SYNDICATION”->
  3. 单击 RSS 提要的名称
  4. 转到自定义提要设置并插入片段
于 2013-06-24T04:40:31.907 回答