Automating Excerpt

时间:2011-01-05 作者:Eeyore

我正在努力automate 编辑通过自动化工作excerpts.

我的解决方案可行,但几乎没有问题:

如果一篇文章开头有图像/破坏的html,它会破坏版面。

子字符串剪切单词。

是否有更好的解决方案来自动化摘录或改进现有代码?

<?php if(!empty($post->post_excerpt)) {

      the_excerpt();

    } else {

      echo "<p>".substr(get_the_content(), 0, 160)."...</p>";

    }
?>

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

默认情况下,摘录过滤器会按字数减少您的帖子,我认为这可能比您现在使用的基于字符的substr函数更可取,并且在执行时还会将标签和图像字符串化。

您可以使用过滤器设置要摘录的字数excerpt_length (默认为55个字,codex中的此函数显示如何将其更改为20:)

function new_excerpt_length($length) {
    return 20;
}
add_filter(\'excerpt_length\', \'new_excerpt_length\', 999);
如果需要使用示例中基于字符长度的截止值,可以通过对输出应用适当的过滤器来修复断开的标记等,如下所示:

$content_to_excerpt = strip_tags( strip_shortcodes( get_the_content() ) ); 
echo "<p>". substr( apply_filters(\'the_excerpt\', $content_to_excerpt), 0, 160)."...</p>";
请注意,在截断摘录之前,您正在剥离标记并应用过滤器,以免在摘录中留下一个打开的标记,这会破坏布局的其余部分。

有许多伟大的主题以创造性的方式处理摘录,我建议你看看它们是如何做到的。以下是一些思考过这个问题的人的好博客帖子:

另外,要了解处理摘录的真正随机方法,请查看Kirby theme - 它试图通过使用css只显示标题和列表(根据我的记忆),实现类似Microsoft Word的自动摘要功能。

SO网友:MathSmath

你真的不需要这样做。The\\u extract()标记会自动检查摘录,如果不存在,则会使用帖子内容的前55个单词(去掉所有标记)。此摘录长度可以通过钩住the excerpt_length filter.

如果您试图在自动生成的摘录中包含html(图像、链接等),这有点棘手。显然,在任意数量的单词或字符处打断字符串也可能会打断任何(x)html。

Wordpress有一个内部函数,可以帮助实现这个名为force\\u balance\\u tags()的功能。它位于/wp includes/formatting中。php文件。此函数相当可靠地将结束标记添加到字符串中的打开标记。但这不是万能的。。。它不会修复不完整的标记(可能在中间被切掉的标记)。因此,首先要由您决定如何在标记之间拆分字符串。

结束

相关推荐