Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么wpmu_new_用户不在插件内部启动,而是在functions.php内部启动?_Php_Wordpress_Wpmu - Fatal编程技术网

为什么wpmu_new_用户不在插件内部启动,而是在functions.php内部启动?

为什么wpmu_new_用户不在插件内部启动,而是在functions.php内部启动?,php,wordpress,wpmu,Php,Wordpress,Wpmu,我有一个项目要完成,WordPress多站点博客中的站点将自动将用户添加到相应的站点(插件已启用的站点) 我希望我的措辞是正确的 问题是:wpmu_new_用户钩子不会在插件内部启动,但会在functions.php内部启动 这是我的代码: add_action( 'wpmu_new_user', 'register_hack_action', 10, 1 ); add_action( 'wpmu_activate_user', 'register_hack_action', 10, 1);

我有一个项目要完成,WordPress多站点博客中的站点将自动将用户添加到相应的站点(插件已启用的站点)

我希望我的措辞是正确的

问题是:wpmu_new_用户钩子不会在插件内部启动,但会在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内容/插件),然后在某些网站上激活时,它就不起作用了。如果你能亲自尝试一下,你就会明白我的意思。。我不明白为什么它不起作用。我需要它在插件中运行。

只有一些广泛的调试才能回答这个问题。。。但是这种东西最好放在一个盒子里

必用插件(又称mu插件)是安装在内容文件夹内的特殊目录中的插件,在安装的所有站点上都会自动启用。必须使用的插件不会显示在wp admin插件页面的默认插件列表中–尽管它们会出现在特殊的必须使用部分–并且除非从必须使用目录中删除插件文件,否则不能禁用该插件,默认情况下,该目录位于
wp content/mu plugins

我不明白你为什么要使用这个
include_once
,请测试一下


尊重:

  • 作为一个普通插件,它应该是网络激活的,并尝试用以下内容封装操作:

    add_action( 'plugins_loaded', function() {
         add_action( 'wpmu_new_user', 'register_hack_action', 10, 1 );
         add_action( 'wpmu_activate_user', 'register_hack_action', 10, 1);
    });
    
  • 也许你在主网站主题里放了什么

我最后不得不使用两个插件,一个必须使用的插件和一个常规插件。各个站点需要选择激活或停用常规插件,并且必须使用插件检查是否已激活,并将注册用户添加到已激活的用户中。