WordPress 改现有函数的输出,别动主题文件,用 filter 挂上去
摘要
上周有人问我,主题输出的文章摘要末尾带了个「…」,想换成「阅读全文」。他改的是主题里的 functions.php,改完是生效了,主题一更新全没了。这活儿本来就该用 filter 干。 先找有没有现成的 filter WordPress 的
上周有人问我,主题输出的文章摘要末尾带了个「…」,想换成「阅读全文」。他改的是主题里的 functions.php,改完是生效了,主题一更新全没了。这活儿本来就该用 filter 干。
先找有没有现成的 filter
WordPress 的好处是核心和主题都留了钩子。摘要这块通常是 excerpt_length 和 excerpt_more 两个,翻一下 wp-includes/formatting.php 里 wp_trim_excerpt 附近能对上台。
add_filter('excerpt_more', function () {
return ' ... 阅读全文';
});
注意 get_permalink() 不传参数时取的是当前文章,在循环里能用,跳出循环就取到别的了。我一开始在头部模板里调,结果所有摘要都链到同一篇。
优先级参数别乱填
add_filter 第四个参数是优先级,默认 10。数字越小越先跑。有的人看别人写 99 就跟着抄,其实 99 是最后执行,如果你的函数依赖前面某个 filter 的结果,跑到最后反而拿不到。
我的习惯是能不传就不传,默认 10 够用。真撞车了再调,别提前猜。
改不动的就换思路
也有函数压根没留 filter。这种情况两个选择:一是用 str_replace 在外层包一道 the_content 之类的钩子,做字符替换;二是干脆弃用它,自己写个等价的。
第一种能跑但不优雅,遇到多语言或者 HTML 属性里刚好有同名字符串就会误伤。我一般优先选第二种。
说到底一句话:能挂钩子的地方就别动文件。主题更新是常态,改过的文件活不过三个月。
2026年10月22日 08:31
前后30天 · 点日期看归档
9月22日
9月23日
9月24日
9月25日
9月26日
9月27日
9月28日
9月29日
9月30日
10月1日
10月2日
10月3日
10月4日
10月5日
10月6日
10月7日
10月8日
10月9日
10月10日
10月11日
10月12日
10月13日
10月14日
10月15日
10月16日
10月17日
10月18日
10月19日
10月20日
10月21日
10月22日
10月23日
10月24日
10月25日
10月26日
10月27日
10月28日
10月29日
10月30日
10月31日
11月1日
11月2日
11月3日
11月4日
11月5日
11月6日
11月7日
11月8日
11月9日
11月10日
11月11日
11月12日
11月13日
11月14日
11月15日
11月16日
11月17日
11月18日
11月19日
11月20日
11月21日