我想限制30天内未修改的帖子的修改次数为2。
我有以下功能:
add_filter( 'wp_revisions_to_keep', 'limit_revisions', 10, 2 );
function limit_revisions( $num, $post ) {
$num = 2;
if ( get_the_modified_time( 'U', $post->ID ) + MONTH_IN_SECONDS >= current_time( 'U' ) ) {
$num = -1;
}
return $num;
}
它返回一个正确的$num
值,但如果我更新旧的帖子,它不会删除旧的版本。
如果我从get_the_modified_time
函数中删除$post->ID
,它就像预期的那样工作,但我不明白为什么。设置id作为这个函数的参数是什么错误,它使过滤器不工作?
正如用户Fresz指出的那样,您不需要将$num
传递给limit_revisions
函数。
如果您查看wp_revisions_to_keep
: https://developer.wordpress.org/reference/functions/wp_revisions_to_keep/的文档,您会注意到它接受一个参数:post
。
在你当前的设置中,你有limit_revisions( $num, $post )
-这意味着$num
实际上是post
-因为你先传递它。
你可以这样重构你的代码:
add_filter( 'wp_revisions_to_keep', 'limit_revisions');
// Pass only post
function limit_revisions( $post ) {
$num = 2;
if ( get_the_modified_time( 'U', $post->ID ) + MONTH_IN_SECONDS >= current_time( 'U' ) ) {
$num = -1;
}
return $num;
}