我想将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设置为此函数的参数会导致过滤器无法工作,这有什么错?
发布于 2021-02-12 04:02:43
正如用户Fresz所指出的,您不需要将$num传递给limit_revisions函数。
如果您查看wp_revisions_to_keep:https://developer.wordpress.org/reference/functions/wp的文档,您会注意到它只有一个参数: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;
}https://stackoverflow.com/questions/66158888
复制相似问题