network_admin_edit_(action) │ хук-событие │ WP 3.1.0

Срабатывает при обработке пользовательского действия через wp-admin/network/edit.php в админке сети WordPress Multisite.

Подходит для сохранения настроек сетевого плагина и других операций в админке сети.

Перед этим событием срабатывает wpmuadminedit.

После выполнения callback WordPress перенаправляет пользователя на главную страницу админки сети. Чтобы вернуть его на другую страницу, выполните свой редирект и завершите запрос через exit.

В callback самостоятельно проверяйте права на операцию через current_user_can(), nonce через check_admin_referer() и входные данные. Само событие не выполняет эти проверки за ваш код.

Использование

add_action( 'network_admin_edit_(action)', 'wp_kama_network_admin_edit_action' );

/**
 * Function for `network_admin_edit_(action)` action-hook.
 * 
 * @return void
 */
function wp_kama_network_admin_edit_action(){
	// action...
}
$action(строка)

Динамическая часть имени хука. Берётся из $_GET['action'] - из параметра action в URL.

Например, для edit.php?action=my_action сработает network_admin_edit_my_action.

Даже при отправке формы методом POST указывайте action в URL формы. Скрытое поле <input name="action">, отправленное только в POST, не задаёт имя этого события.

В callback этот параметр не передаётся. У события нет аргументов.

Примеры

#1 Сохранение настройки плагина для сети

Добавим страницу «Настройки плагина» в раздел «Настройки» админки сети. Форма отправит запрос в network/edit.php, а callback сохранит опцию текущей сети через update_site_option().

Код можно разместить в плагине, активированном для сети, или в MU-плагине.

add_action( 'network_admin_menu', 'kama_add_network_settings_page' );
add_action( 'network_admin_edit_my_action', 'kama_save_network_settings' );

function kama_add_network_settings_page() {
	add_submenu_page(
		'settings.php',
		'Настройки плагина',
		'Настройки плагина',
		'manage_network_options',
		'kama-network-settings',
		'kama_render_network_settings_page'
	);
}

function kama_render_network_settings_page() {
	if ( ! current_user_can( 'manage_network_options' ) ) {
		wp_die( 'Недостаточно прав.' );
	}

	$enabled  = get_site_option( 'kama_feature_enabled', false );
	$form_url = network_admin_url( 'edit.php?action=my_action' );
	?>
	<div class="wrap">
		<h1>Настройки плагина</h1>

		<form method="post" action="<?php echo esc_url( $form_url ); ?>">
			<?php wp_nonce_field( 'kama_save_network_settings' ); ?>

			<label>
				<input type="checkbox" name="kama_feature_enabled" value="1"
					<?php checked( $enabled ); ?>>
				Включить функцию для сети
			</label>

			<?php submit_button(); ?>
		</form>
	</div>
	<?php
}

function kama_save_network_settings() {
	if ( ! current_user_can( 'manage_network_options' ) ) {
		wp_die( 'Недостаточно прав.' );
	}

	if ( 'POST' !== $_SERVER['REQUEST_METHOD'] ) {
		wp_die( 'Допустим только POST-запрос.', '', [ 'response' => 405 ] );
	}

	check_admin_referer( 'kama_save_network_settings' );

	$enabled = isset( $_POST['kama_feature_enabled'] )
		&& '1' === $_POST['kama_feature_enabled'];

	update_site_option( 'kama_feature_enabled', $enabled );

	wp_safe_redirect(
		network_admin_url( 'settings.php?page=kama-network-settings' )
	);
	exit;
}

Регистрация события должна выполняться и при запросе к network/edit.php. Поэтому не размещайте add_action() внутри callback, который только выводит страницу настроек.

Список изменений

С версии 3.1.0 Введена.

Где вызывается хук

В файле: /wp-admin/network/edit.php
network_admin_edit_(action)
wp-admin/network/edit.php 38
do_action( "network_admin_edit_{$action}" );

Где используется хук в WordPress

Использование не найдено.