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 标签的用法深入地挖掘了一下,本文分析的只是其中的一种,其他的我就不一一分析和翻译了。

  1. :???: 博主,你好。我从百度找到了你的这篇文章。
    最近我正在忙于将z-blog换成wordpress,目前处于准备工作阶段,在本地安装了wordpress,打算调整好后弄到新的空间里面。
    关于more标签,我就是想把首页的more标签那里的链接换成该文章的URL。
    但是根据博主给的这个函数,我把它加到了所用主题的functions.php之下,结果不好用啊。
    惭愧,我不是很懂wordpress,不明白把一个函数添加到functions.php中除了把这段代码复制进去,还需要做什么?
    谢谢!

  2. 按照此方法,文章外的p标签没有了, 下面这个失效,怎么解决呀?
    .entry-content p,.entry-summary p{text-indent: 2em;}

  3. Pingback: 升级到WordPress3.0.1,本博客修改小记

  4. 这么爱折腾,我现在看到代码就头大了……
    老万,我想把存档的月份改成2位的数字显示怎么弄啊?还有啊

    • 关于时间的显示格式,你可以看看the_time()函数的参数,我也背不下来,每次改都是看着PHP手册改的,呵呵

  5. 来看看有没有新鲜的文章,没有,既然来了就留个脚印走吧。昨天拿别人的ID评论了两条,没有恶意的,向博主和小卢道歉了。

    • win主机肯定是不支持mb_strimwidth的,PHP4也是不支持的,不过现在WP2.9都必须PHP5了,所以也只有win主机不支持这个函数