截断带有图库标签的帖子

时间:2013-03-06 作者:Davor Popovic

我有一个问题,我用这个函数来截断帖子

function truncate_post($amount,$quote_after=false) {
$truncate = get_the_content();
$truncate = apply_filters(\'the_content\', $truncate);
$truncate = preg_replace(\'@<script[^>]*?>.*?</script>@si\', \'\', $truncate);
$truncate = preg_replace(\'@<style[^>]*?>.*?</style>@si\', \'\', $truncate);
$truncate = strip_tags($truncate);
$truncate = substr($truncate, 0, strrpos(substr($truncate, 0, $amount), \' \'));
echo $truncate;
echo "...";
if ($quote_after) echo(\'\');
}
但在我的帖子里有wordpress gallery call

[gallery ids="614,592,591"]
现在我需要这个截断来不计算这个库标签。。因为我得到的是空字段。。这能做到吗?要仅截断文本。。。

2 个回复
SO网友:s_ha_dum

使用strip_shortcodes 也这将从内容中删除短代码。

注意:您的代码似乎在做一些我不理解的事情。例如,您运行the_content 筛选添加标记的内容,只运行strip_tags 稍后,它将删除(至少部分)该标记。strip_tags 将剥离<script><style> 标签也有,但你有个人preg_replaces代表这些。此外,标记由strip_tags, 例如<p> 标签,将根据您的角色限制计算。而且,由于您在一个空格上断开,因此可能会在标记的中间断开,并最终导致错误的标记。这是:

<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>

可能最终是。。。

<p>Test paragraph.</p><!-- Comment --> <a

你可以调查一下wp_filter_nohtml_kses, 当然,还要重新思考如何处理空间和这个函数必然会出现的损坏的标记。

SO网友:Davor Popovic

好了,这是我的密码。。。

function truncate_post($amount,$quote_after=false) {
    $truncate = get_the_content();
    $truncate = strip_shortcodes( $truncate );
    $truncate = strip_tags($truncate);
    $truncate = substr($truncate, 0, strrpos(substr($truncate, 0, $amount), \' \'));
    echo $truncate;
    echo "...";
    if ($quote_after) echo(\'\');
}

结束

相关推荐

为什么在生成JSON文件时运行get_the_excerpt()需要28秒,而在没有JSON文件的情况下只需要599毫秒?

我使用以下代码生成JSON提要。我需要从帖子中提取摘录,但运行get\\u the\\u extract()需要28秒(是秒!)在本地服务器上运行,而将get\\u the\\u extract()更改为“hi”时为599毫秒。有人知道为什么要花这么长时间吗?我能做些什么来加快加载速度?这是在我使用的计算机上的本地web服务器上,因此不是由于网络问题。$json = array(); while ( have_posts() ) { the_post(); $yo