计划删除菜单页面和快捷代码

时间:2016-03-19 作者:Zeeshan

我想安排在一定时间段后从wordpress中删除菜单页和快捷码。我正在使用下面的代码,但经过一段时间后,快捷码和菜单都不会被删除。下面是我的代码,如果我运行代码时没有使用“init”函数进行调度,这两个函数都会被删除。知道我做错了什么吗。

add_action(\'init\',\'s\');
function s () {
    wp_schedule_event( current_time( \'timestamp\' ),\'mines\', \'my_action\');
}

add_action(\'my_action\', array($this, \'zeeshan\'));

function zeeshan(){  
    function custom_menu_page_removing() {
        remove_menu_page( \'booktaxi\' );
    } //end menu page removing
    add_action( \'admin_menu\', \'custom_menu_page_removing\' );

    function remove_shortcode_from_index( $content ) {
        remove_shortcode(\'BOOKTAXI\');
        $message = "Please buy the plugin license to continue";

        return $content.$message;
    } //end remove shortcode
    add_filter( \'the_content\', \'remove_shortcode_from_index\' );
}
这是我正在使用的自定义时间过滤器,用于在每1秒后启动计划操作。

add_filter(\'cron_schedules\',\'my_cron_definer\');    
function my_cron_definer($schedules) {  
    $schedules[\'mines\'] = array( \'interval\'=> 1, \'display\'=>  __(\'Once Every 10 seconds\')  );
    return $schedules;
}

1 个回复
SO网友:majick

首先,除非zeeshan 实际上是类中的函数,请勿使用array($this,\'zeeshan\'). (如果它在类中,请不要介意。)

第二,即使该事件正在触发,它可能会触发,也可能不会触发这种方式只会在触发时影响当前的页面加载,因此毫无意义。相反,您可以在触发事件时更新选项值。

add_action(\'my_action\', \'zeeshan_switch\');

function zeeshan_switch() {
    if (!add_option(\'remove_my_menu_and_shortcode\',\'1\')) {
        update_option(\'remove_my_menu_and_shortcode\',\'1\');
    }
}
然后在实际功能的开头添加开关检查:

add_action(\'init\', \'zeeshan\');
function zeeshan(){  
    // check for the trigger value
    if (get_option(\'remove_my_menu_and_shortcode\') != \'1\') {return;}

    function custom_menu_page_removing() {
        ............
顺便说一句,我希望你在让插件禁用它自己的功能之前给用户大量的警告/通知。在我看来,这更像是一种跛脚软件策略,最终用户可能更喜欢nagware而不是它!相反,您可以考虑免费/高级模式,并利用您的时间为高级版本编程额外功能,而不是禁用免费功能。只是一些随机的建议,关于什么被证明更有效。