WordPress More 标签从起始位置显示

现在我的 WordPress 首页上用的是 mb_strimwidth 函数来实现自动截断输出摘要的,这个是 PHP5 中特有的函数,对中文支持比较好,这个方法在之前关于首页的摘要显示方法在《Wordpress 3种日志摘要方法》中介绍过。今天要折腾的不是这个摘要显示方法,而是 WordPress 最原始的 More 标签摘要方法。

我还从来没有用过 WordPress 的 More 标签,所以对其了解程度仅限于基本使用,没有深究过。今天在给某童鞋修改主题时就遇到了 More 标签的一个问题,就是当使用 More 标签并且在首页通过 More 文本链接进入单篇日志的正文时,不是从正文起点位置阅读,而是直接跳到 More 标签之后的内容。

看了一下 More 标签的链接地址,格式形如:www.domain.com/123.html#more-456,其中的 456 就是这篇日志的 post_ID,那就很明显啦,这个链接肯定是直接跳至正文内页相应的锚链接,果然在正文中找到一个内容为空的锚点 <span id="more-456"></span>,所以要使点击 More 链接文本后从日志起始位置显示,只需要去掉 #more-456 这个锚点就可以啦。

分析完毕,操作嘛我已经发现有高手解决了,就直接抄抄过来啦,方法如下:

把以下函数放在 WordPress 主题文件夹的 functions.php 中:

function remove_more_jump_link($link) {
    $offset = strpos($link, '#more-');
    if ($offset) {
        $end = strpos($link, '"',$offset);
    }
    if ($end) {
        $link = substr_replace($link, '', $offset, $end-$offset);
    }
    return $link;
}
add_filter('the_content_more_link', 'remove_more_jump_link');

这样就OK了,More 标签就直接显示文章的 URL 了,不带锚点的,方法是看了此文:http://digwp.com/2010/01/wordpress-more-tag-tricks/,英文好的童鞋可以好好看看这篇文章,其中对 More 标签的用法深入地挖掘了一下,本文分析的只是其中的一种,其他的我就不一一分析和翻译了。