Như được đề cập bởi @Sumit, bạn cần tắt nguồn cấp nhận xét cho một trang (điều mà tôi thấy thực sự lạ vì các bình luận mặc định bị tắt trên các trang?) ... đây là những gì tôi đã kết thúc (cho phép nhận các nhận xét trang cho ăn với ?withcomments=1
nếu muốn):
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;
}
}
Nhưng để hiển thị nội dung trang, vì mẫu nguồn cấp dữ liệu thực sự kiểm tra rss_use_excerpt
để quyết định hiển thị toàn văn hoặc tóm tắt (được đặt trên Cài đặt -> Trang đọc), nên điều này cần được ghi đè nếu bạn muốn hiển thị toàn bộ nội dung cho nguồn cấp dữ liệu trang ( để bạn có thể đặt tùy chọn chính thành bất cứ điều gì bạn thích cho bài viết.) Nếu không, bất cứ điều gì bạn làm, nội dung có thể kết thúc trong trường mô tả của nguồn cấp dữ liệu thay vì trường nội dung.
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;
}
Và cuối cùng, để có được trường mô tả RSS để hiển thị một đoạn trích trang, bạn có thể phải làm điều này (về cơ bản là một bản sao wp_trim_excerpt
không có strip_shortcodes
) - tốt, tôi đã làm nhưng dù sao cũng có thể là do một số hành vi mã ngắn kỳ lạ trên trang I đã thử nghiệm:
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;
}