¿Cómo mostrar el contenido de la página en la fuente?

12

Quiero mostrar todo el contenido de cada página en el feed. Lo busqué y encontré un complemento, pero no pude resolver mi problema.

Quiero que cuando ingrese http://swissaudio.com/craftsmanship/feed me proporcione el contenido de la página en el feed. ¿Cómo puedo hacer eso?

    
pregunta raxa 19.05.2016 - 10:25

3 respuestas

7

Primero configure el tipo de publicación para que se muestre en la página principal de la fuente, es decir, /feed usando pre_get_posts hook

$q->set('post_type', array('post', 'page'));

En una página individual, WordPress muestra la fuente de comentarios, luego la configura en false y muestra el contenido de la página en la fuente.

$q->is_comment_feed = false;

En la plantilla de alimentación, WordPress llama a the_excerpt_rss() , que llama a get_the_excerpt() , por lo tanto, utilizando el filtro excerpt_length cambia la longitud al máximo.

Ejemplo completo: -

add_action('pre_get_posts', 'wpse_227136_feed_content');
/**
 * Set post type in feed content and remove comment feed
 * @param type $q WP Query
 */
function wpse_227136_feed_content($q) {
    //Check if it main query and for feed
    if ($q->is_main_query() && $q->is_feed()) {
        //Set the post types which you want default is post
        $q->set('post_type', array('post', 'page'));
    }

    //Check if it feed request and for single page 
    if ($q->is_main_query() && $q->is_feed() && $q->is_page()) {
        //Set the comment feed to false
        $q->is_comment_feed = false;
    }
}

add_filter( 'excerpt_length', 'wpse_227136_excerpt_length', 999 );
/**
 * Filter the except length to full content.
 *
 * @param int $length Excerpt length.
 * @return int $length modified excerpt length.
 */
function wpse_227136_excerpt_length( $length ) {
    if (is_feed() && !get_option('rss_use_excerpt')) {
        return PHP_INT_MAX;
    }

    return $length;
}
    
respondido por el Sumit 21.05.2016 - 13:39
4

Esto puede no ser ideal, pero es un comienzo. Primero asegúrese de que el contenido completo esté en el feed:

function fullcontentfeed($content) {
    global $post;
    $content = $post->post_content;
    return $content;
    }
add_filter('the_excerpt_rss', 'fullcontentfeed');

Entonces deberías ver el feed completo en esta URL

enlace

Luego puede usar add_rewrite_rule para redirigir a los visitantes desde / feed /. Lejos de ser ideal, pero tal vez sea un comienzo para que otra persona trabaje.

    
respondido por el cjbj 21.05.2016 - 13:45
3

Como lo mencionó @Sumit, debe desactivar la fuente de comentarios de una página (lo que me parece realmente extraño, ya que, de forma predeterminada, ¿los comentarios están desactivados en las páginas?) ... esto es lo que terminé (permitiendo obtener los comentarios de la página se alimentan con ?withcomments=1 si se desea):

add_action('pre_get_posts', 'rss_page_feed_full_content');

function rss_page_feed_full_content($q) {
    // Check if it feed request and for single page
    if ($q->is_main_query() && $q->is_feed() && $q->is_page()) {
        //Set the comment feed to false
        $q->set('post_type', array('page'));
        // allow for page comments feed via ?withcomments=1
        if ( (isset($_GET['withcomments'])) && ($_GET['withcomments'] == '1') ) {return;}
        $q->is_comment_feed = false;
    }
}

Pero para mostrar el contenido de la página, ya que la plantilla del feed realmente comprueba rss_use_excerpt para decidir si se muestra el texto completo o el resumen (establecido en Configuración - > Página de lectura), esto debe anularse si desea el contenido completo. para mostrar un feed de página (de modo que pueda tener la opción principal configurada en lo que quiera para las publicaciones). De lo contrario, cualquier otra cosa que haga, el contenido puede terminar en el campo de descripción del feed en lugar del campo de contenido.

add_filter('pre_option_rss_use_excerpt', 'page_rss_excerpt_option');

function page_rss_excerpt_option($option) {
    // force full content output for pages
    if (is_page()) {return '0';}
    return $option;
}

Y finalmente, para obtener el campo de descripción RSS para mostrar un extracto de página, podría tener que hacer esto (que es básicamente una copia de wp_trim_excerpt sin strip_shortcodes ) - bueno, yo Lo hice de todos modos, pero podría deberse a un extraño comportamiento de shortcode en la página que estaba probando:

add_filter('the_excerpt_rss','rss_page_excerpt');

function rss_page_excerpt($excerpt) {
    if (is_page()) {
        global $post; $text = $post->post_content;
        // removed this line otherwise got blank
        // $text = strip_shortcodes( $text );
        $text = apply_filters( 'the_content', $text );
        $text = str_replace(']]>', ']]>', $text);
        $excerpt_length = apply_filters( 'excerpt_length', 55 );
        $excerpt_more = apply_filters( 'excerpt_more', ' ' . '[…]' );
        $excerpt = wp_trim_words( $text, $excerpt_length, $excerpt_more );
    }
    return $excerpt;
}
    
respondido por el majick 22.05.2016 - 13:17

Lea otras preguntas en las etiquetas