admin_init 挂钩未按预期工作(无法写入日志,无法添加操作)
admin_init hook not working as expected (cannot write to log, cannot add actions)
我正在尝试在插件激活后添加一些操作。我发现应该或多或少地这样做:
register_activation_hook( __FILE__, 'activation_function' );
add_action('admin_init', 'after_activation_function');
function activation_function(){
add_option( 'activated_plugin_xyz', 'plugin xyz activated' ); //option is added to database
}
function after_activation_function(){
if (is_admin() && get_option ('activated_plugin_xyz') == 'plugin xyz activated'){
//do some things
wp_schedule_event(time(), 'daily', 'some_cron'); //cron event is added
add_action('wp_login', 'xyz_login_action');
add_action('some_cron', 'xyz_cron_job'); //cron job is correctly hooked
//delete_option('activated_plugin_xyz');
}
error_log("nothing in debug.log log...");
echo ("echoing works");
//wp_die('dying works');
}
function xyz_cron_job(){
error_log('cron job not logging anything...'); //nothing in log...
}
我可以在 wp crontrol 中看到 cron 作业,函数 xyz_cron_job 被挂钩,但是当我手动触发它时,没有任何内容写入日志。 xyz_login_action 似乎也不起作用。 如果我在 xyz_cron_job 中做其他事情,它们似乎也没有效果...
如果我取消注释,after_activation_function 被称为 bcs dying works。有谁能够帮助我?在我看来,我似乎缺少一些基本的东西......
已修复:
必须在 after_activation_function()
之外添加操作(我想每次加载 wp 时都必须挂钩操作,如果挂钩发生在 after_activation_function() 中,挂钩会在操作挂钩之前运行)
工作代码如下所示:
register_activation_hook( __FILE__, 'activation_function' );
add_action('admin_init', 'after_activation_function');
//hook outside other functions
add_action('some_cron', 'xyz_cron_job');
add_action('wp_login', 'xyz_login_action');
function activation_function(){
add_option( 'activated_plugin_xyz', 'plugin xyz activated' ); //option is added to database
}
function after_activation_function(){
if (is_admin() && get_option ('activated_plugin_xyz') == 'plugin xyz activated'){
//do some things
wp_schedule_event(time(), 'daily', 'some_cron');
delete_option('activated_plugin_xyz');
}
}
function xyz_cron_job(){
error_log('logging works');
}