Aggiungere campi personalizzati al feed RSS di un custom post type in WordPress
Vorrei aggiungere campi personalizzati del mio custom post type al feed RSS relativo a quel post type, disponibile all'indirizzo http://example.com/feed/?post_type=my_custom_post_type
Ho trovato informazioni su come farlo per il feed regolare, ma nulla su come modificare il feed di un custom post type.
Devo aggiungere 10-15 elementi al feed (1° atto, 2° atto, 3° atto, prezzo, link d'acquisto...)

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');
Dovresti essere in grado di sostituire e aggiungere qualsiasi altro meta valore di cui hai bisogno nel feed.

quindi dovrei aggiungere un elemento al controllo del post type per ogni meta key (probabilmente circa 10) e poi richiamarlo nel template? Non puoi semplicemente chiamare get_post_meta nell'area del meta value con l'ID del post?

Ciao @curtismchale:
Seguendo l'eccellente risposta di @prettyboymp e aggiungendo la mia variante, ecco come puoi gestire più campi personalizzati (io ne ho usati 3, ma puoi aggiungerne altri):
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";
}
}
P.S. Assicurati di ringraziare @prettyboymp perché non sapevo come fare questa cosa prima della sua risposta. Rispondo anch'io solo perché non sono sicuro di quanto tempo ci vorrà prima che lui torni, così nel frattempo ho deciso di darti una risposta.

GRAZIE GRAZIE per queste eccellenti informazioni.
Volevo ampliare quanto già scritto dagli altri due... Per far sì che questo funzioni correttamente, devi avere un namespace personalizzato. Ecco come si fa:
/* PER LA VALIDAZIONE devi aggiungere il namespace */
add_action('rss2_ns', 'my_rss2_ns');
function my_rss2_ns(){
echo 'xmlns:mycustomfields="'. get_bloginfo('wpurl').'"'."\n";
}
E poi prefissare il nome del campo item con il namespace personalizzato In questo esempio, ho usato "mycustomfields" Vedi sotto:
/* aggiungi elementi */
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";
}
}
Come nota a margine, puoi usare un'azione per agganciarti a uno qualsiasi dei 3
rss2_ns : per aggiungere un namespace specifico
add_action('rss2_ns', 'my_rss2_ns');
rss2_head : per aggiungere tag nell'intestazione del feed
add_action('rss2_head', 'my_rss2_head');
rss2_item : per aggiungere tag in ogni elemento del feed
add_action('rss2_item', 'my_rss2_item');
