我想安排在一定时间段后从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;
}
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而不是它!相反,您可以考虑免费/高级模式,并利用您的时间为高级版本编程额外功能,而不是禁用免费功能。只是一些随机的建议,关于什么被证明更有效。