我正在开发一个插件,并尝试内置一个选项来禁用后期修订。我已注册设置,并确认复选框正在链接到数据库。选项值为null或1。
我要做的是定义这个常量:define(\'WP_POST_REVISIONS\', false);
仅当选项设置为1时,才能在插件文件中。
如果我将常量直接放入插件函数文件中,它会工作,但如果我尝试在If语句或通过函数使用它,无论我如何尝试,它都不会工作。
我得到的选项值如下:$disable_revisions = get_option(\'disable-revisions\');
以下是我尝试过的:
if ($disable_revisions==1){
define(\'WP_POST_REVISIONS\', false);
}
我还尝试使用一个单独的函数:
if ($disable_revisions==1){
add_action(\'admin_init\', \'disable_revs\');
}
function disable_revs(){
define(\'WP_POST_REVISIONS\', false);
}
我试着将这个动作添加到“wp”、“init”和其他一些动作中,但它们都不起作用。
只有当$disable_revisions = 1
?
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成
我认为您不应该在插件中定义常量。以后很难调试。
IMHO使用wp_revisions_to_keep
过滤器将是更好的解决方案。
因此,您的代码可能如下所示:
add_filter( \'wp_revisions_to_keep\', \'my_revisions_to_keep_based_on_settings\', 10, 2 );
function my_revisions_to_keep_based_on_settings( $num, $post ) {
// change that according to your needs
return intval( get_option(\'disable-revisions\') );
}