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');
}