我正在使用一个自定义函数创建一个短代码,在模板的主页上显示最新的博客文章。但我尽量不让它显示任何图像。
我知道我可以使用高级摘录插件删除图像,但问题是它也会从索引中删除图像。我想保留的php提要正在使用the_excerpt()
在模板中。
下面是创建快捷码的自定义函数:
function my_recent_news()
{
global $post;
$html = "";
$my_query = new WP_Query( array(
\'post_type\' => \'post\',
\'posts_per_page\' => 4
));
if( $my_query->have_posts() ) : while( $my_query->have_posts() ) : $my_query->the_post();
$html .= "
<article>
<span class=\\"date\\">" . get_the_date() . "</span>
<h2><a href=\\"" . get_permalink() . "\\">" . get_the_title() . "</a></h2>
" . get_the_excerpt() . "
</article>
";
endwhile;
endif;
wp_reset_query();
return $html;
}
add_shortcode( \'news\', \'my_recent_news\' );
我之前发布过一些关于这方面的信息:
get excerpt without images
但解决方案是使用高级摘录插件,但为此,我尝试使用主页和博客提要页上的摘录,但我想保留
img
在博客提要上添加标记,并从自定义快捷码中删除img标记。
我试着用the_excerpt()
在自定义的短代码函数中,但这似乎破坏了整个函数,并显示了一些非常奇怪的东西。
我不太确定我是否需要在某处安装一个过滤器来去除这些东西。我也不确定如果我真的需要一个过滤器,它会去哪里?在循环之前,循环之后,还是它需要自己构造的参数?
最合适的回答,由SO网友:ultraloveninja 整理而成
好的,我做了更多的挖掘和测试,通过使用strip_tags()
基本上删除get_the_excerpt()
.
以下是我的更新代码:
function my_recent_news()
{
global $post;
$html = "";
$my_query = new WP_Query( array(
\'post_type\' => \'post\',
\'posts_per_page\' => 4
));
if( $my_query->have_posts() ) : while( $my_query->have_posts() ) : $my_query->the_post();
$html .= "
<article>
<span class=\\"date\\">" . get_the_date() . "</span>
<h2><a href=\\"" . get_permalink() . "\\">" . get_the_title() . "</a></h2>
" . strip_tags(get_the_excerpt(), "<a>") . "
</article>
";
endwhile;
endif;
wp_reset_query();
return $html;
}
add_shortcode( \'news\', \'my_recent_news\' );
我添加了
<a>
保留要显示的帖子摘录中的任何超链接。
这样,我就可以在博客提要页面上保留标记,同时使用高级摘录插件来帮助调整长度等等。
SO网友:Chip Bennett
如果您阅读Codex entry for get_the_excerpt()
, 您将发现:
如果帖子没有摘录,此函数将wp\\u trim\\u extract应用于帖子内容,并返回生成的字符串“[…]”在最后。wp\\U trim\\u摘录通过get\\u the\\u摘录过滤器应用,可以删除。
这个wp_trim_excerpt()
功能:
如果需要,从内容中生成摘录。
摘录字数将为55个字,如果字数大于55个字,则字符串“[…]”将附加到摘录中。如果字符串少于55个字,则内容将按原样返回。
所以,你可以重新申请wp_trim_excerpt()
到get_the_excerpt
过滤,或直接输出:
$html .= "
<article>
<span class=\\"date\\">" . get_the_date() . "</span>
<h2><a href=\\"" . get_permalink() . "\\">" . get_the_title() . "</a></h2>
" . wp_trim_excerpt() . "
</article>
";