WordPress修订版本控制功能WP_POST_REVISIONS不起作用怎么回事?

WordPress修订版本控制很简单,在配置文件wp-config.php中自定义WP_POST_REVISIONS即可,有三种可选值:true、falseint (>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_keepwp_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所有,转载请注明出处。)