我想将自定义帖子类型中的自定义字段添加到RSS Feed中的RSS提要中,该帖子类型位于http://example.com/feed/?post_type=my_custom_post_type
我已经看到了针对常规Feed执行此操作的信息,但是对于如何重写自定义帖子类型Feed则一无所获。
我需要在Feed中添加10到15个商品(第一幕,第二幕,第三幕,价格,购买链接...)
我想将自定义帖子类型中的自定义字段添加到RSS Feed中的RSS提要中,该帖子类型位于http://example.com/feed/?post_type=my_custom_post_type
我已经看到了针对常规Feed执行此操作的信息,但是对于如何重写自定义帖子类型Feed则一无所获。
我需要在Feed中添加10到15个商品(第一幕,第二幕,第三幕,价格,购买链接...)
Answers:
function add_custom_fields_to_rss() {
if(get_post_type() == 'my_custom_post_type' && $my_meta_value = get_post_meta(get_the_ID(), 'my_meta_key', true)) {
?>
<my_meta_value><?php echo $my_meta_value ?></my_meta_value>
<?php
}
}
add_action('rss2_item', 'add_custom_fields_to_rss');
您应该能够替换以及需要添加到Feed中的任何其他元值。
嗨@curtismchale:
捎带关@ prettyboymp的出色答卷,我就可以旋转,这里是你如何能做到多个自定义字段(我做了3,你可以做更多):
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 "<{$field}>{$value}</{$field}>\n";
}
}
PS请确保提供@prettyboymp道具,因为在他回答之前我不知道该怎么做。我也是在回答,因为我不确定他回来之前要等多久,所以我决定在此期间给您答案。
非常感谢您提供的出色信息。
我想扩展其他两个已经写的内容。为了验证这一点,您必须具有一个自定义名称空间。这样做的方法如下:
/* 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";
}
然后使用自定义名称空间为字段名称项添加前缀在此示例中,我使用了“ mycustomfields”,请参见下文:
/* add elements */
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";
}
}
附带一提,您可以使用动作将3种挂钩
rss2_ns : to add a specific namespace
add_action('rss2_ns', 'my_rss2_ns');
rss2_head : to add tags in the feed header
add_action('rss2_head', 'my_rss2_head');
rss2_item : to add tags in each feed items
add_action('rss2_item', 'my_rss2_item');