Como mencionado pelo @Sumit, você precisa desativar o feed de comentários de uma página (o que eu acho realmente estranho, já que os comentários padrão estão desativados nas páginas?) ... foi isso que eu acabei (permitindo obter os comentários da página) alimente com, ?withcomments=1
se desejar):
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, como o modelo do feed realmente verifica rss_use_excerpt
se é necessário exibir texto completo ou resumo (definido em Configurações -> Página de leitura), isso precisa ser substituído se você deseja que o conteúdo completo seja exibido para um feed de página ( para que você possa ter a opção principal definida como desejar para as postagens.) Caso contrário, o que você fizer o conteúdo poderá acabar 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 obter o campo de descrição do RSS para exibir um trecho da página, você pode fazer isso (que é basicamente uma cópia do wp_trim_excerpt
sem strip_shortcodes
) - bem, eu fiz assim mesmo, mas pode ser devido a algum comportamento estranho de código de acesso na página 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;
}