Como mostrar o conteúdo da página no feed?

12

Eu quero mostrar todo o conteúdo de cada página no feed. Eu procuro por ele e encontrei alguns plugins, mas não consegui resolver meu problema.

Eu quero quando eu digito http://swissaudio.com/craftsmanship/feed ele me fornece o conteúdo da página no feed. Como posso fazer isso?

    
por raxa 19.05.2016 / 10:25

3 respostas

7

Primeiro defina o tipo de postagem para exibir na página de feed principal, ou seja, /feed usando pre_get_posts hook

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

Na página individual, o WordPress mostra o feed de comentários, em seguida, defina-o como false e exiba o conteúdo da página no feed.

$q->is_comment_feed = false;

No modelo de feed, o WordPress chama the_excerpt_rss() , o que chama get_the_excerpt() , portanto, usar excerpt_length filter altera o tamanho para max.

Exemplo 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;
}
    
por Sumit 21.05.2016 / 13:39
4

Isso pode não ser ideal, mas é um começo. Primeiro, verifique se o conteúdo completo está no feed:

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

Você deverá ver o feed completo neste URL

enlace

Você pode usar add_rewrite_rule para redirecionar visitantes de / feed /. Longe do ideal, mas talvez um começo para alguém trabalhar.

    
por cjbj 21.05.2016 / 13:45
3

Como mencionado por @Sumit, você precisa desativar o feed de comentários de uma página (o que acho muito estranho, já que os comentários padrão estão desativados nas páginas?) ... é com isso que acabei ficando (permitindo o feed de comentários da página com ?withcomments=1 se desejado):

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;
    }
}

Mas, para exibir o conteúdo da página, uma vez que o modelo de feed realmente verifica rss_use_excerpt para decidir exibir texto completo ou resumo (definido em Configurações - > página Leitura), isso precisa ser substituído se você quiser o conteúdo completo para exibir um feed de página (para que você possa definir a opção principal como desejar para as postagens.) Caso contrário, o conteúdo poderá ser exibido no campo de descrição do feed, em vez do campo de conteúdo.

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;
}

E, finalmente, para que o campo de descrição do RSS exiba um trecho de página, você pode fazer isso (que é basicamente uma cópia de wp_trim_excerpt sem strip_shortcodes ) - bem, eu fez de qualquer maneira, mas pode ser devido a algum estranho comportamento shortcode na página que eu estava testando:

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;
}
    
por majick 22.05.2016 / 13:17