2012-02-04 2 views
7

Я хочу добавить некоторые пользовательские поля, чтобы добавить нового пользователя в Wordpress. Я использую следующие перехватчики:Wordpress Добавить пользователя User hooks

  • show_user_profile
  • edit_user_profile

эти крючки, отображающие новое пользовательское поле на редактирование страницы профиля, но я хочу, чтобы новое пользовательское поле будет показано Добавить страницу пользователя ,

, а также я хочу, чтобы вставить значения в wp_usermeta таблице, для этого я использую следующие перехватчики:

  • personal_options_update
  • edit_user_profile_update

эти крючки также работают нормально при редактировании или обновлении профиль, но мне нужно вставить запись в wp_usermeta tabe во время добавления нового пользователя, а не во время обновления профиля.

, пожалуйста, дайте мне намек на крючок, который будет использоваться в ADD New User.

Заранее спасибо.

ответ

2

Насколько я вижу, нет никаких крючков действий, которые будут запускаться на новой пользовательской странице. Поиск в user-new.php для do_action.

+1

Да, на новой странице пользователя не будет запущены крючки, и edit_user_profile_update будет запущен на странице user_update. Спасибо. –

+1

Я думаю, что это был ОП, изначально искали: http://codex.wordpress.org/Plugin_API/Action_Reference/user_register – bestprogrammerintheworld

0

Попробуйте этот код в wp-includes/user.php:

do_action('profile_update', XXXX); 
do_action('user_register', XXXX); 
10

Используйте этот крючок

add_action('user_new_form', 'xxxx'); 

Хорошо, вот полный код, чтобы добавить свое разрешение для пользователя Mailchimp регистрации на пользователя добавлять/редактировать

//Add a mailchimp permission field, on user creation, user profile update 
    add_action('user_new_form', 'mailchimp_permission_field'); 
    add_action('show_user_profile', 'mailchimp_permission_field'); 
    add_action('edit_user_profile', 'mailchimp_permission_field'); 

    function mailchimp_permission_field($user) { 
     ?> 
     <table class="form-table"> 
      <tr class="form-field"> 
       <th scope="row"><label for="mail_chimp">Mail Chimp </label></th> 
       <td> 
        <label for="mail_chimp"> 
         <input style="width: auto;" type="checkbox" name="mail_chimp" id="mail_chimp" 
          <?php if(current_filter() == 'user_new_form' || get_the_author_meta('mail_chimp', $user->ID)): ?> 
          checked = "checked" 
          <?php endif; ?> /> 
         Subscribe to MailChimp. 
        </label> 
       </td> 
      </tr> 
     </table> 
    <?php } 

// handle mailchimp registrations on user creation 
    add_action('user_register', 'subscribe_to_mailchimp_after_registration', 10, 1); 

    function subscribe_to_mailchimp_after_registration($user_id) { 
     if (isset($_POST['email']) && isset($_POST['mail_chimp']) && $_POST['mail_chimp'] == 'on') { 
      mailchimp_subscribe($_POST['email']); 
     } 
    } 

//Save new field for user in users_meta table 
    add_action('user_register', 'save_mailchimp_permission_field'); 
    add_action('edit_user_profile_update', 'save_mailchimp_permission_field'); 

    function save_mailchimp_permission_field($user_id) { 

     if (!current_user_can('edit_user', $user_id)) { 
      return false; 
     } 

     if (isset($_POST['mail_chimp']) && $_POST['mail_chimp'] == 'on') { 
      update_usermeta($user_id, 'mail_chimp', true); 
      mailchimp_subscribe(get_userdata($user_id)->user_email); 
     } 
     else { 
      update_usermeta($user_id, 'mail_chimp', false); 
      mailchimp_unsubscribe(get_userdata($user_id)->user_email); 
     } 
    } 
+0

Привет! Вы можете сделать свой ответ лучше, добавив к нему дополнительную информацию (у вас есть источники или ссылки на документацию, например?) – Dhara

+0

@Dhara Я добавил полный код сейчас, дайте мне знать, если вам нужно больше объяснений. – Farhan

+0

- это тоже полезно для пользователя admin? –

1

Согласно documentation, вы: можетhook к действию user_new_form, конечно, ваша версия WordPress должна быть выше версии 3.7.0.

Этот крючок запускается в конце новой формы пользователя. Он передает контекстную строку, чтобы сделать оба типа новых пользовательских форм уникальными для целевых. Контексты: add-existing-user (многостраничный сайт) и add-new-user (один сайт и сетевой администратор).

add_action('user_new_form', 'your_function_name'); 
Смежные вопросы