如何在提要中显示页面内容?

时间:2016-05-19 作者:raxa

我想在feed中显示每个页面的全部内容。我搜索它并找到了一些插件,但我无法解决我的问题。

我想当我进去的时候http://swissaudio.com/craftsmanship/feed 它在提要中为我提供页面内容。我该怎么做?

3 个回复
最合适的回答,由SO网友:Sumit 整理而成

首先设置要在主提要页上显示的帖子类型,即。/feed 使用pre_get_posts

$q->set(\'post_type\', array(\'post\', \'page\'));
WordPress在单个页面上显示注释提要,然后将其设置为false 并在提要中显示页面内容。

$q->is_comment_feed = false;
在提要模板WordPress调用中the_excerpt_rss() 哪个呼叫get_the_excerpt() 所以使用excerpt_length 过滤器将长度更改为最大值。

完整示例:-

add_action(\'pre_get_posts\', \'wpse_227136_feed_content\');
/**
 * Set post type in feed content and remove comment feed
 * @param type $q WP Query
 */
function wpse_227136_feed_content($q) {
    //Check if it main query and for feed
    if ($q->is_main_query() && $q->is_feed()) {
        //Set the post types which you want default is post
        $q->set(\'post_type\', array(\'post\', \'page\'));
    }

    //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->is_comment_feed = false;
    }
}

add_filter( \'excerpt_length\', \'wpse_227136_excerpt_length\', 999 );
/**
 * Filter the except length to full content.
 *
 * @param int $length Excerpt length.
 * @return int $length modified excerpt length.
 */
function wpse_227136_excerpt_length( $length ) {
    if (is_feed() && !get_option(\'rss_use_excerpt\')) {
        return PHP_INT_MAX;
    }

    return $length;
}

SO网友:cjbj

这可能并不理想,但这只是一个开始。首先确保提要中包含完整内容:

function fullcontentfeed($content) {
    global $post;
    $content = $post->post_content;
    return $content;
    }
add_filter(\'the_excerpt_rss\', \'fullcontentfeed\');
然后您应该在这个url上看到完整的提要

http://swissaudio.com/craftsmanship/feed/?withoutcomments=1

然后您可以使用add_rewrite_rule 从/feed/重定向访问者。远非理想,但可能是其他人工作的开始。

SO网友:majick

正如@Sumit所提到的,你需要关闭页面的评论提要(我觉得这很奇怪,因为默认情况下页面上的评论都是关闭的?)。。。这就是我最终得到的结果(允许获取页面评论提要?withcomments=1 如果需要):

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;
    }
}
但用于显示页面内容,因为提要模板实际上会检查rss_use_excerpt 要决定是显示全文还是摘要(在“设置->阅读页”上设置),如果要为页面提要显示完整内容,则需要覆盖此选项(以便可以将帖子的主选项设置为任何您喜欢的选项)否则,无论您做什么,内容都可能最终出现在提要的描述字段而不是内容字段中。

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;
}
最后,为了让RSS描述字段显示页面摘录,您可能必须这样做(这基本上是wp_trim_excerpt 没有strip_shortcodes) - 嗯,我还是这么做了,但这可能是因为我测试的页面上出现了一些奇怪的短代码行为:

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;
}

相关推荐

如何从wp-content/ploads/.*抓取查询字符串

我编写了一个快速的小插件,可以获取一些自定义query\\u变量,进行一些操作,并将输出存储在CSV文件中。它对页面和帖子非常有用,但是。。。似乎对wp内容/上传的查询实际上并没有通过WordPress,我也想抓住这些。我在考虑两种不同的方法:根据this question, 可以编写自定义重写规则,并将请求传递到WordPress iff,这是对wp内容/上载的查询,并且存在一个查询字符串;或编写一个独立的PHP程序来处理来自自定义重写规则的请求,而无需担心WordPress的崩溃。(1)的问题是。。。