WordPress как на ладони
wordpress jino

Изменение данных пользователя WordPress

Можно ли каким-то образом заменить данные пользователя в админке.

Мне нужно, чтобы вместо стандартных first_name/last_name пользователь мог вводить фамилию, имя, отчество, дату рождения и паспортные данные.

0
horror 10 месяцев назад
  • 0
    Otshelnik-Fm182 cайт: across-ocean.otshelnik-fm.ru

    Плагин WP-Recall. у него есть такая замечательная фишка как поля профиля https://wordpress.org/plugins/wp-recall/

    horror 9 месяцев назад

    Ну что вы, сударь, это же из пушки по воробьям. Мне просто нужно заменить поля в профиле. Ну есть же фильтр user_contactmethods который позволяет профильтровать массив полей контактных данных. Хорошо бы что-то подобное для личных данных.

    Комментировать
  • 0
    Kama4464

    Для изменения хуков нет. И сделать это проще всего, просто скрыв их через CSS и добавить свои поля. Вот статья, как добавить произвольные поля на страницу редактирования пользователя (англ.).

    Если коротко в коде то так:

    <?php
    
    ## Добавляем данные на страницу редактирования профиля.
    add_action( 'show_user_profile', 'yoursite_extra_user_profile_fields' );
    add_action( 'edit_user_profile', 'yoursite_extra_user_profile_fields' );
    function yoursite_extra_user_profile_fields( $user ) {
    ?>
      <h3><?php _e("Extra profile information", "blank"); ?></h3>
      <table class="form-table">
    	<tr>
    	  <th><label for="phone"><?php _e("Phone"); ?></label></th>
    	  <td>
    		<input type="text" name="phone" id="phone" class="regular-text" 
    			value="<?php echo esc_attr( get_the_author_meta( 'phone', $user->ID ) ); ?>" /><br />
    		<span class="description"><?php _e("Please enter your phone."); ?></span>
    	</td>
    	</tr>
      </table>
    <?php
    }
    
    ## Сохраняем данные при сохранении
    add_action( 'personal_options_update', 'yoursite_save_extra_user_profile_fields' );
    add_action( 'edit_user_profile_update', 'yoursite_save_extra_user_profile_fields' );
    function yoursite_save_extra_user_profile_fields( $user_id ) {
      $saved = false;
      if ( current_user_can( 'edit_user', $user_id ) ) {
    	update_user_meta( $user_id, 'phone', $_POST['phone'] );
    	$saved = true;
      }
      return true;
    }

    2 Выводим во фронте

    echo get_user_meta( get_current_user_id(), 'phone', 1 );
    
    // или так
    
    echo wp_get_current_user()->phone;
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.