WordPress.org

Español

Soporte

Soporte » WP Avanzado » Incluir custom field en el feed

Incluir custom field en el feed

  • 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 10 meses, 3 semanas por  Rafa Poveda. Razón: sanitizing code
Viendo 7 respuestas - 1 de 7 (de 7 total)
  • 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?

    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!

    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

    ¡Hola!

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

    Así que nada, a seguir probando 😉

    Gracias!

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

    Un saludo.

Viendo 7 respuestas - 1 de 7 (de 7 total)
  • Debes estar registrado para responder a este debate.
Ir a la barra de herramientas