Adding html banner to posts

时间:2015-12-11 作者:Brady Pacha

我正在编写一个插件,在所有博客帖子的顶部添加一个横幅。我正在使用the_content 过滤并预先挂起一些html。这样做时,html不会显示在摘录中,但我希望横幅在那里。我需要做什么?我不想允许用户在摘录中添加任何额外的html标记。

编辑:

我现在使用的是the_contentthe excerpt 筛选以显示横幅。我不想只是将横幅添加到内容中,它会显示在内容页上,但不会显示在帖子列表页上。使用justthe_excerpt 将仅显示在帖子列表页面(取决于主题),而不显示单个帖子页面。我一直在用is_single 函数可帮助区分帖子列表页面和单个帖子的页面。到目前为止,我的代码是这样的。

function display_banner( $content ) {
    return \'<div class="banner">Banner</div>\' . $content;
}

function display_content_banner() {
    if ( is_single() ) {
        return display_banner( $content );
    } else {
        return $content; //on the post list page, the_excerpt is in charge of displaying the banner.
    }
}
add_filter(\'the_excerpt\', \'display_banner\');
add_filter(\'the_content\', \'display_content_banner\');
我遇到的问题是,有些主题不会在帖子列表页面上显示摘录,而是显示为完整的帖子文本,因此出现这种情况时,不会放置我的横幅。

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

rss_use_excerpt 是人们可以用来更改博客的选项Full TextSummary. 结合了is_front_page 这个设置可以确定当您不想在博客页面上显示横幅时,您的博客页面是否正在显示摘要。

function display_banner($content)
{
    return \'<div class="banner">Banner</div>\' . $content;
}

function display_content_banner($content)
{
    // [ 0:NO, 1:YES ] - https://codex.wordpress.org/Option_Reference#Reading
    static $rss_use_excerpt;
    if( ! isset($rss_use_excerpt)) $rss_use_excerpt = get_option(\'rss_use_excerpt\');

    if(is_single() || (is_front_page() && ! $rss_use_excerpt)) {
        return display_banner($content);
    }
    else {
        return $content; //on the post list page, the_excerpt is in charge of displaying the banner.
    }
}

add_filter(\'the_excerpt\', \'display_banner\');
add_filter(\'the_content\', \'display_content_banner\');