http://example.com/feed/?post_type=my_custom_post_typeにある投稿タイプのRSSフィードに、カスタム投稿タイプのカスタムフィールドを追加したい
通常のフィードでこれを行うことに関する情報を見ましたが、カスタム投稿タイプのフィードを書き換える方法については何も知りませんでした。
フィードに10〜15個のアイテムを追加する必要があります(第1幕、第2幕、第3幕、価格、購入リンク...)
http://example.com/feed/?post_type=my_custom_post_typeにある投稿タイプのRSSフィードに、カスタム投稿タイプのカスタムフィールドを追加したい
通常のフィードでこれを行うことに関する情報を見ましたが、カスタム投稿タイプのフィードを書き換える方法については何も知りませんでした。
フィードに10〜15個のアイテムを追加する必要があります(第1幕、第2幕、第3幕、価格、購入リンク...)
回答:
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');
フィードに追加する必要のあるメタ値やその他のメタ値を置き換えることができるはずです。
こんにちは@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の小道具は必ず渡してください。彼の答えが出る前にこれを行う方法がわからなかったからです。彼が帰ってくるまでにどれくらいかかるか分からないので、私も答えています。その間に答えを出すことにしました。
この素晴らしい情報に感謝します。
他の2つがすでに書いたことを拡張したかった...これを検証するには、カスタム名前空間が必要です。その方法は次のとおりです。
/* 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');