现在我的 Wordpress 首页上用的是 mb_strimwidth 函数来实现自动截断输出摘要的,这个是 PHP5 中特有的函数,对中文支持比较好,这个方法在之前关于首页的摘要显示方法在中介绍过。今天要折腾的不是这个摘要显示方法,而是 Wordpress xxx的 More 标签摘要方法。
我还从来没有用过 Wordpress 的 More 标签,所以对其了解程度xx于基本使用,没有深究过。今天在给某童鞋修改主题时就遇到了 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 中:
??? $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 了,不带锚点的,方法是看了此文:,英文好的童鞋可以好好看看这篇文章,其中对 More 标签的用法深入地挖掘了一下,本文分析的只是其中的一种,其他的我就不一一分析和翻译了。