WP笔记

WordPress摘要详解

什么是摘要

WordPress 摘要是一段非必需的,对文章的概述性文字;简单地说,就是文章大意。小学的时候都学过概括全文大意,写摘要的时候就派上用场了。

如何给文章添加摘要

编辑文章时,在文章编辑框下面的摘要编辑框里添加即可。

摘要应该满足以下要求:

  • 概括全文大意
  • 关键词突出
  • 简短,最好按照搜索引擎的Meta Description(元描述)的规则来写,中文字符50-80个就差不多了。

摘要可以作为元描述,没错!

很多主题会将摘要作为元描述,符合逻辑,代码也简单。

All In One SEO Pack插件也会将摘要作为描述,如果你没有手动填元描述的话。注意,用All In One SEO时填写摘要是明智的选择,不要寄希望于自动元描述功能,这功能对中文支持的不好,详情看这里

如何在摘要之后添加浏览全文的链接

摘要通过the_excerpt()函数输出,这个函数很专一,只管输出摘要,所以你得打点一下,在后面加段代码

<a href="<?php echo get_permalink(); ?>"> [ Read More → ]</a>

手动摘要和自动摘要

懒人都喜欢自动化,WordPress的摘要并不一定要手动去填,它可以自动生成。

当文章没有手动摘要时,而且当前文章模板使用 the_excerpt() 的模板标签时,WordPress 将会自动截取文章的前 55 个单词作为自动摘要;而当文章模板使用 the_content() 的模板标签时,WordPress 则会在文章中搜索 More 标签,并将其之前的部分作为内容预告。

我们都知道下面这段代码可以实现自动截取文章前多少个字符作为短描述的功能

<?php echo mb_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)), 0, 300," ...<a href='".get_permalink()."' target='_blank'>查看详情 &gt;&gt;");?>

其实,用WordPress的the_excerpt()(摘要函数)可以实现相同的功能。

翻开twentyeleven主题的functions.php,可以发现几个处理摘要的函数

//设定摘要长度

function twentyeleven_excerpt_length( $length ) {
	return 40;
}
add_filter( 'excerpt_length', 'twentyeleven_excerpt_length' );

//给自动摘要添加“继续阅读”链接

function twentyeleven_continue_reading_link() {
    return ' <a href="' . esc_url(get_permalink()) . '">' . __('Continue reading <span class="meta-nav">&rarr;</span>', 'twentyeleven') . '</a>';
}

function twentyeleven_auto_excerpt_more($more) {
    return ' &hellip;' . twentyeleven_continue_reading_link();
}

add_filter('excerpt_more', 'twentyeleven_auto_excerpt_more');

//给手动摘要添加“继续阅读”链接

//需要调用twentyeleven_continue_reading_link()函数
function twentyeleven_custom_excerpt_more($output) {
    if (has_excerpt() && !is_attachment()) {
        $output .= twentyeleven_continue_reading_link();
    }
    return $output;
}

add_filter('get_the_excerpt', 'twentyeleven_custom_excerpt_more');

唯一的问题是对中文的支持,中文编码格式是多字节的,WP的自动摘要默认输出前55个单词不适用,英文单词通常用空格分隔,中文却很少出现空格。这就是为什么这一节开头的代码要用mb_strimwidth去截取content内容。我们可以将twentyeleven_custom_excerpt_more函数稍微改一下

function twentyeleven_custom_excerpt_more($output) {
    if (!is_attachment()) {
        if (!has_excerpt()) {
            $output = mb_strimwidth($output, 0, 300);
        }
        $output .= twentyeleven_continue_reading_link();
    }
    return $output;
}

add_filter('get_the_excerpt', 'twentyeleven_custom_excerpt_more');

当没有填写手动摘要时,用mb_strimwidth截取WP产生的自动摘要的长度,这样就不会输出长长的自动摘要了。

很多主题都使用the_content()输出内容,还有必要理会摘要吗?

也许你的博客不需要摘要,但博客的rss feed需要摘要的,你一定记得后台设置->阅读中,可以设置feed中的每篇文章显示为全文或者摘要。如果你想赚点流量,让feed中的文章输出摘要并带上继续阅读的链接再理想不过了。

3条评论

  1. Pingback: WordPress主题开发Part1——首页 | 小喵爱你
  2. 你好,置顶的文章能显示摘要吗??最多能显示多少??能全部显示吗??如何在摘要之后添加浏览全文的链接??我想在我的首页的置顶文章能够全部显示或者显示多一点!~~您能帮助我吗??loygd.com是我的网站 。

    1. 你说的是可以实现的。置顶文章和普通文章除了显示位置不一样,别的没有任何区别
      主题用the_content()输出置顶文章,用more标签截断可以只显示一部分,后面带有阅读全文链接。

      如果主题中用the_excerpt输入置顶文章,对英文而言,可以显示自动摘要,对中文而言要用我文章中提到的方法处理一下字数问题,没有继续阅读的链接。这个链接你可以用我文中提到的方法添加。

      我看你的网站是淘宝客类型的,如果要让指定文章非常与众不同,可以结合手动摘要和自定义字段(custom field)定制。没有啥做不了的,主要看你主题的代码怎么写。

评论已关闭。