Добавить пользовательские поля в пользовательский тип сообщения RSS

Я хотел бы добавить пользовательские поля в свой собственный тип сообщения в RSS-канал для этого типа сообщений, который находится по адресу http://example.com/feed/?post_type=my_custom_post_type.

Я видел информацию об этом для регулярного фида, но не знаю, как переписать фид пользовательских сообщений.

Мне нужно добавить 10-15 пунктов в фид (1-й акт, 2-й акт, 3-й акт, цена, ссылка на покупку …)

Solutions Collecting From Web of "Добавить пользовательские поля в пользовательский тип сообщения RSS"

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:

Piggybacking с отличным ответом @ 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');