network_admin_edit_(action)
Срабатывает при обработке пользовательского действия через 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 | Введена. |
Где вызывается хук
do_action( "network_admin_edit_{$action}" );