Почему wpmu_new_user не запускается внутри плагина, а работает внутри functions.php?
У меня есть проект, чтобы завершить, где сайты в блоге WordPress Multisite будут автоматически добавлять пользователей на соответствующие сайты (где плагин включен)
Надеюсь, я правильно сформулировал это.
Проблема: хук 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), а затем активируется на определенных сайтах, просто не будет работать. если вы можете попробовать это сами, вы поймете, что я имею в виду.. Я не понимаю, почему это не сработает. Мне нужно, чтобы он был внутри плагина и работал.
1 ответ
Только небольшая отладка может ответить на этот вопрос... Но такого рода вещи лучше разместить внутри плагина Must Use.
Плагины Must-use (aka mu-plugins) - это плагины, установленные в специальном каталоге внутри папки содержимого и автоматически включаемые на всех сайтах установки. Плагины Must-use не отображаются в списке плагинов по умолчанию на странице плагинов wp-admin - хотя они появляются в специальном разделе Must-Use - и не могут быть отключены, кроме как путем удаления файла плагина из каталога must-use, который находится в
wp-content/mu-plugins
по умолчанию.
Я не понимаю, почему вы используете это include_once
Пожалуйста, проверьте это, удалив это.
Especulations:
как обычный плагин, он должен быть активирован по сети и попытаться инкапсулировать действия с помощью:
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); });
- может быть вы вкладываете в основную тему сайта?