Ajouter des champs personnalisés au type de publication personnalisé RSS

15

J'aimerais ajouter des champs personnalisés dans mon type d'article personnalisé au flux RSS de ce type d'article situé à l'adresse enlace

J'ai vu des informations sur cette opération pour le flux régulier, mais rien sur la manière de réécrire le flux de type de post personnalisé.

Je devrai ajouter 10 à 15 éléments au flux (1er acte, 2ème acte, 3ème acte, prix, lien d'achat ...)

    
posée curtismchale 09.11.2010 - 03:28

3 réponses

19
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');

Vous devriez pouvoir remplacer toutes les autres méta-valeurs que vous devez ajouter au flux.

    
réponse donnée prettyboymp 09.11.2010 - 03:47
17

Bonjour @curtismchale:

Piggybacking off de l'excellente réponse de @ prettyboymp , voici comment vous pouvez créer plusieurs champs personnalisés (j'en ai fait 3, vous pouvez en faire plus):

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. Assurez-vous de donner les accessoires de @prettyboymp car je ne savais pas comment faire cela avant sa réponse. Je vous réponds moi aussi, car je ne sais pas combien de temps il faudra avant qu'il ne revienne, j'ai donc décidé de vous répondre entre-temps.

    
réponse donnée MikeSchinkel 09.11.2010 - 08:06
7

MERCI MERCI POUR CETTE EXCELLENTE INFORMATION.

Je voulais prolonger ce que les deux autres ont déjà écrit ... Pour que cela soit valide, vous devez avoir un espace de noms personnalisé. Voici comment procéder:

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

Et préfixez ensuite l'élément de nom de champ avec l'espace de nom personnalisé Dans cet exemple, j'ai utilisé "mycustomfields" Voir ci-dessous:

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

Sur une note de côté, vous pouvez utiliser une action pour vous connecter à l’un des 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');
    
réponse donnée Acts7 30.07.2012 - 22:20

Lire d'autres questions sur les étiquettes