• Tengo un tema que usa campos personalizados para añadir varios ítems. El blog es de recetas, y me interesa incluir en el feed los ingredientes y las instrucciones, que se definen con custom fields.

    El caso es que he conseguido añadir las instrucciones pero no los ingredientes, y he usado el mismo método para ambos casos, llamándolos desde el functions. La única diferencia es que el campo de ingredientes es text area y las instrucciones son text (no sé si puede tener algo que ver).

    El código que he puesto en el functions es éste:

    /**Ingredientes e instrucciones en el feed**/
    function fields_in_feed($content) {  
        if(is_feed()) {  
            $post_id = get_the_ID();  
            $output = '<div><h3>Ingredientes:</h3>';  
            $output .= '<p>' . get_post_meta($post_id, "ingredientes", true) . '</p>';  
            $output = '<div><h3>Instrucciones:</h3>';  
            $output .= '<p>' . get_post_meta($post_id, "paso_1", true) . '</p>';
            $output .= '<p>' . get_post_meta($post_id, "paso_2", true) . '</p>';
            $output .= '<p>' . get_post_meta($post_id, "paso_3", true) . '</p>';
            $output .= '<p>' . get_post_meta($post_id, "paso_4", true) . '</p>';
            $output .= '<p>' . get_post_meta($post_id, "paso_5", true) . '</p>';
            $output .= '<p>' . get_post_meta($post_id, "paso_6", true) . '</p>';
            $output .= '<p>' . get_post_meta($post_id, "paso_7", true) . '</p>';
            $output .= '<p>' . get_post_meta($post_id, "paso_8", true) . '</p>';
            $output .= '<p>' . get_post_meta($post_id, "paso_9", true) . '</p>';
            $output .= '<p>' . get_post_meta($post_id, "paso_10", true) . '</p>';
            $output .= '</div>';  
            $content = $content.$output;  
        }  
        return $content;  
    }  
    add_filter('the_content','fields_in_feed');

    ¿Una ayudita? 🙂

    Gracias!

    • Este debate fue modificado hace 7 años, 7 meses por Rafa Poveda. Razón: sanitizing code
Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)
  • Moderador Rafa Poveda

    (@bi0xid)

    Por lo pronto lo que veo es que en esta línea no estás cerrando el div.

            $output = '<div><h3>Ingredientes:</h3>';  
            $output .= '<p>' . get_post_meta($post_id, "ingredientes", true) . '</p>';  

    Es posible que sí se esté escribiendo el contenido, pero que no se esté visualizando. ¿Lo revisas?

    Iniciador del debate dulcesdiabeticos

    (@dulcesdiabeticos)

    Me he sentido súper idiota jajajaj 😛

    He cerrado el div, borrado caché y eso, y sigue sin salir, no ha colado. ¿Otras ideas?

    Muchas gracias!

    Moderador Rafa Poveda

    (@bi0xid)

    Era una posibilidad que teníamos que descartar 🙂

    Primero, mira en base de datos si el dato se está guardando. Si se está guardando, tendrás que ver si no está devolviendo los datos como un array.

    Lo mejor es utilizar algo como esto para poder ver qué se está grabando:

    $meta = get_post_meta($post_id, 'ingredientes', true);
    var_dump($meta);
    Moderador LGrusin

    (@lgrusin)

    Usa the_content_rss()
    add_filter('the_content_rss','fields_in_feed');

    La comprobación is_feed ya no es necesaria.

    Un saludo

    Hola,
    Te recomiendo el uso del action hook rss2_item para añadir datos extra a los datos por defecto del feed.
    https://codex.wordpress.org/Plugin_API/Action_Reference/rss2_item

    Iniciador del debate dulcesdiabeticos

    (@dulcesdiabeticos)

    ¡Hola!

    Probé eso y al ponerlo se rompió la web, se quedó en blanco xD

    Así que nada, a seguir probando 😉

    Gracias!

    Moderador Rafa Poveda

    (@bi0xid)

    No sé si esto te puede ayudar un poco más: Customizing Feeds.

    Un saludo.

Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)
  • El debate ‘Incluir custom field en el feed’ está cerrado a nuevas respuestas.