我有一个项目要完成,WordPress 多站点博客中的站点将自动将用户添加到相应的站点(启用插件的位置)
我希望我措辞正确。
问题: wpmu_new_user 钩子不会在插件内部触发,但会在 functions.php 内部触发
这是我的代码:
add_action( 'wpmu_new_user', 'register_hack_action', 10, 1 );
add_action( 'wpmu_activate_user', 'register_hack_action', 10, 1);
function register_hack_action( $user_id ) {
$this_id = get_current_blog_id();
if ( !defined('ABSPATH') ) {
// do nothing
} else {
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
}
$blog_list = get_blog_list( 0, 'all' );
foreach ($blog_list AS $blog) {
switch_to_blog($blog['blog_id']);
if ( is_plugin_active( 'register-hack/register-hack.php' ) ) {
// add user to blog
add_user_to_blog($blog['blog_id'], $user_id, 'subscriber');
}
}
}
当您将代码段添加到functions.php 时,这非常有效。但是,当您将其添加到插件(进入 wp-content/plugins)然后在某些站点上被激活时,它将无法正常工作。如果您可以自己尝试一下,您就会明白我的意思。我不明白为什么它不起作用。我需要它在插件内部并工作。