Comme mentionné par @Sumit, vous devez désactiver le flux de commentaires pour une page (ce que je trouve vraiment étrange car les commentaires par défaut sont désactivés sur les pages?) ... c'est ce que j'ai fini par (permettant d'obtenir les commentaires de la page nourrir avec ?withcomments=1
si vous le souhaitez):
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;
}
}
Mais pour afficher le contenu de la page, puisque le modèle de flux vérifie en fait rss_use_excerpt
de décider d'afficher le texte intégral ou le résumé (défini dans Paramètres -> Page de lecture), cela doit être remplacé si vous souhaitez que le contenu complet s'affiche pour un flux de page ( afin que vous puissiez avoir l'option principale définie sur ce que vous voulez pour les publications.) Sinon, quoi que vous fassiez, le contenu peut se retrouver dans le champ de description du flux au lieu du champ de contenu.
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;
}
Et enfin, pour obtenir le champ de description RSS pour afficher un extrait de page, vous devrez peut- être le faire (qui est essentiellement une copie de wp_trim_excerpt
sans strip_shortcodes
) - enfin, je l'ai fait de toute façon, mais cela pourrait être dû à un comportement étrange de shortcode sur la page testait:
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;
}