深度优化 WordPress:清理冗余的文章最后编辑者
多人作者的 WordPress 的会有 meta_key
为 _edit_last
的 postmeta
,这个自定义字段是用于保存文章最后编辑者,然后主题可以通过模板函数:get_the_modified_author
在页面显示文章的最后编辑者,目前貌似还没有见过有这么用的主题。😄
但是对于个人博客,这个功能,可能就咩有什么意义,另外如果最后编辑者就是作者本身,存储 _edit_last
这个 postmeta
就没有什么意义了,那么我们可否不存储这个 postmeta
。
我们可以在存储这个 postmeta 的时候,和文章的作者比较一下,如果是相同的,那么就不保存:
add_filter('update_post_metadata',function($check, $id, $key, $value){
if($key == '_edit_last'){
if(get_post($id)->post_author == $value){
return true;
}
}
return $check;
}, 10, 4);
然后在获取的时候,我们判断一下当前文章是否有 _edit_last
这个 postmeta
,没有就将当前文章作者作为最后编辑者设置到当前文章自定义字段的缓存中:
add_filter('get_post_metadata', function($pre, $id, $key){
if(!$key || $key == '_edit_last'){
$cache = wp_cache_get($id, 'post_meta') ?: update_meta_cache('post', [$id])[$id];
$cache += ['_edit_last'=>get_post($id)->post_author];
if($key == '_edit_last'){
return $cache['_edit_last'];
}
return $cache;
}
return $pre;
}, 1, 3);
通过这样的方式,我们就可以在单人博客的 WordPress 中无需存储 _edit_last
这个 postmeta
,通过这样方式,也可以加快 WordPress 的效率。😄
我已经实现了一个 WordPress 深度优化插件,可以清理无用的 WordPress 数据和通过 Memcached 在各个方面对 WordPress 进行优化,其中就包含该功能。