WordPress修订版本控制功能WP_POST_REVISIONS不起作用怎么回事?
2022-05-21
WordPress修订版本控制很简单,在配置文件wp-config.php中自定义WP_POST_REVISIONS即可,有三种可选值:true、false和int (>0)。
define('WP_POST_REVISIONS', 2);
如果不生效,首先确认这行代码添加的位置是否正确。笔者在此犯了低级错误,由于用ssh登录的远程服务器,vim编辑器没用代码高亮显示,不小心把代码添加到注释里面了,必定无法生效……
对于不懂代码的小白玩家,特别要注意这一点!建议放在引入wp-settings.php这一行上面(可选):
define('WP_POST_REVISIONS', 2);
require_once ABSPATH . 'wp-settings.php';
笔者为了排查问题,还花时间看了下版本控制的代码,这个模块已经N年没更新了,很稳定,系统本身不会有什么问题。
另外,如果想自定义逻辑,根据需求动态设定修订版本数量,就用过滤器wp_revisions_to_keep,非常方便。
function custom_wp_revisions_to_keep( $num, $post ) {
return 3;
}
add_filter( 'wp_revisions_to_keep', 'custom_wp_revisions_to_keep', 10, 2 );
不止于此,还有wp_post_revisions_to_keep和wp_page_revisions_to_keep两个过滤器,更明确区分文章和页面,也可以实现动态控制。
其实功能上没什么区别,直接贴下WordPress内核源码吧,一目了然。
function wp_revisions_to_keep( $post ) {
$num = WP_POST_REVISIONS;
if ( true === $num ) {
$num = -1;
} else {
$num = (int) $num;
}
if ( ! post_type_supports( $post->post_type, 'revisions' ) ) {
$num = 0;
}
$num = apply_filters( 'wp_revisions_to_keep', $num, $post );
$num = apply_filters( "wp_{$post->post_type}_revisions_to_keep", $num, $post );
return (int) $num;
}
官方介绍:https://wordpress.org/support/article/revisions/
(版权归cpury.com所有,转载请注明出处。)