Предоставить администратору сайта возможность “пропустить подтверждение по электронной почте” при добавлении нового пользователя.

Вопрос или проблема

В сети WordPress Multisite, когда мы даем администратору сайта возможность добавлять новых пользователей, у администратора сайта нет “флажка” для добавления нового пользователя без отправки электронного письма с ссылкой для активации (см. скриншот)

вставьте описание изображения здесь

Как мы можем добавить эту опцию для администратора сайта?

Вставьте это в ваш файл functions.php:

function my_skip_confirmation_email() {
    if ( is_multisite() && current_user_can( 'create_users' ) ) { ?>

    <table class="form-table">
        <tr>
            <th scope="row"><?php _e( 'Пропустить подтверждение по электронной почте' ); ?></th>
            <td>
                <input type="checkbox" name="noconfirmation" id="noconfirmation" value="1" />
                <label for="noconfirmation"><?php _e( 'Добавить пользователя без отправки письма, требующего их подтверждения.' ); ?></label>
            </td>
        </tr>
    </table>
    <?php }
}
add_action( 'user_new_form', 'my_skip_confirmation_email' );

Добавьте следующее в ваш файл functions.php

function skp_custom_user_create_fields($user){
    if (!is_super_admin( $user_id )) {
?>

    <table class="form-table">
        <tr>
            <th scope="row"><?php _e('Пропустить подтверждение по электронной почте') ?></th>
            <td><input type = "checkbox" name = "noconfirmation" value = "1" <?php checked( $_POST['noconfirmation'], 1 ); ?> /> Добавить пользователя без отправки письма, требующего их подтверждения.</td>
        </tr>
    </table>
<?php
    }
}
add_action("user_new_form", "skp_custom_user_create_fields");

function skp_auto_activate_users($user, $user_email, $key, $meta){

    if(!current_user_can('manage_options'))
        return false;

    if (!empty($_POST['noconfirmation']) && $_POST['noconfirmation'] == 1) {
        wpmu_activate_signup($key);
          return false;
    }
}
add_filter('wpmu_signup_user_notification', 'skp_auto_activate_users', 10, 4);

Это решит проблему.

Ответ или решение

Для решения проблемы добавления новой функциональности "Пропустить подтверждение по электронной почте" при добавлении нового пользователя в WordPress Multisite, вам необходимо внести изменения в файл functions.php вашей темы. Следующий код добавит опцию для администраторов сайтов, позволяя им добавлять пользователей без отправки письма с подтверждением.

Шаги по добавлению опции:

  1. Добавление чекбокса в форму добавления пользователя:
    Вставьте следующий код в файл functions.php вашей темы. Этот код добавляет чекбокс для пропуска отправки подтверждающего письма.

    function my_skip_confirmation_email() {
       if ( is_multisite() && current_user_can( 'create_users' ) ) { ?>
           <table class="form-table">
               <tr>
                   <th scope="row"><?php _e( 'Пропустить подтверждение по электронной почте' ); ?></th>
                   <td>
                       <input type="checkbox" name="noconfirmation" id="noconfirmation" value="1" />
                       <label for="noconfirmation"><?php _e( 'Добавить пользователя без отправки письма, требующего их подтверждения.' ); ?></label>
                   </td>
               </tr>
           </table>
       <?php }
    }
    add_action( 'user_new_form', 'my_skip_confirmation_email' );
  2. Обработка сохранения данных:
    Добавьте следующий код для обработки и сохранения состояния чекбокса при создании нового пользователя.

    function skp_custom_user_create_fields($user) {
       if (!is_super_admin($user->ID)) {
           ?>
           <table class="form-table">
               <tr>
                   <th scope="row"><?php _e('Пропустить подтверждение по электронной почте'); ?></th>
                   <td>
                       <input type="checkbox" name="noconfirmation" value="1" <?php checked($_POST['noconfirmation'], 1); ?> />
                       Добавить пользователя без отправки письма, требующего их подтверждения.
                   </td>
               </tr>
           </table>
           <?php
       }
    }
    add_action("user_new_form", "skp_custom_user_create_fields");
  3. Автоматическая активация пользователей:
    Внесите изменения в процесс создания пользователя, чтобы активировать учетные записи новых пользователей без отправки письма, если чекбокс установлен:

    function skp_auto_activate_users($user, $user_email, $key, $meta) {
       if (!current_user_can('manage_options')) {
           return false;
       }
    
       if (!empty($_POST['noconfirmation']) && $_POST['noconfirmation'] == 1) {
           wpmu_activate_signup($key);
           return false;
       }
    }
    add_filter('wpmu_signup_user_notification', 'skp_auto_activate_users', 10, 4);

Заключение:

Этот набор кода добавит функциональность, позволяющую администраторам сайтов в WordPress Multisite добавлять новых пользователей без отправки электронного письма для подтверждения. Таким образом, администраторы смогут более эффективно управлять пользователями, особенно в случаях, когда существует необходимость в быстрой активации учетных записей.

Убедитесь, что вы внимательно проверили код и протестировали его на тестовой версии вашего сайта перед применением на рабочем сайте.

Оцените материал
Добавить комментарий

Капча загружается...