Como mencionó @Sumit, debe desactivar el feed de comentarios de una página (lo cual 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 alimentar 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, dado que la plantilla de feed en realidad comprueba rss_use_excerpt
si se muestra el texto completo o el resumen (configurado en Configuración -> Lectura de página), esto debe anularse si desea que se muestre el contenido completo para un feed de página ( para que pueda tener la opción principal configurada en lo que quiera para las publicaciones). De lo contrario, haga lo 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 que el campo de descripción RSS muestre un extracto de la página, es posible que tenga que hacer esto (que es básicamente una copia de wp_trim_excerpt
sin strip_shortcodes
), bueno, lo hice de todos modos, pero podría deberse a un comportamiento extraño de código corto en la página. 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;
}