我正在编写一个插件,在所有博客帖子的顶部添加一个横幅。我正在使用the_content
过滤并预先挂起一些html。这样做时,html不会显示在摘录中,但我希望横幅在那里。我需要做什么?我不想允许用户在摘录中添加任何额外的html标记。
编辑:
我现在使用的是the_content
和the 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\');
我遇到的问题是,有些主题不会在帖子列表页面上显示摘录,而是显示为完整的帖子文本,因此出现这种情况时,不会放置我的横幅。
最合适的回答,由SO网友:jgraup 整理而成
rss_use_excerpt 是人们可以用来更改博客的选项Full Text
到Summary
. 结合了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\');