Seperti yang disebutkan oleh @Sumit, Anda perlu mematikan umpan komentar untuk sebuah halaman (yang menurut saya aneh karena secara default komentar tidak aktif pada halaman?) ... inilah yang akhirnya saya dapatkan (memungkinkan untuk mendapatkan komentar halaman beri makan dengan ?withcomments=1
jika diinginkan):
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;
}
}
Tetapi untuk menampilkan konten halaman, karena template feed benar-benar memeriksa rss_use_excerpt
untuk memutuskan apakah akan menampilkan teks lengkap atau ringkasan (ditetapkan pada Pengaturan -> Membaca halaman) maka ini perlu ditimpa jika Anda ingin konten lengkap ditampilkan untuk feed halaman ( sehingga Anda dapat mengatur opsi utama ke apa pun yang Anda suka untuk posting.) Kalau tidak, apa pun yang Anda lakukan, konten akan berakhir di bidang deskripsi umpan alih-alih bidang konten.
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;
}
Dan akhirnya, untuk mendapatkan kolom deskripsi RSS untuk menampilkan kutipan halaman, Anda mungkin harus melakukan ini (yang pada dasarnya adalah salinan wp_trim_excerpt
tanpa strip_shortcodes
) - well, saya tetap melakukannya tetapi mungkin karena beberapa perilaku kode pendek yang aneh pada halaman I sedang menguji:
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;
}