@VitStar

Как создать доп. поле в профиле пользователя с возможностью обновление а не замены данных в нем?

Добрый день!
Возникла такая необходимость как создать доп. поле в профиле пользователя.
Это поле редактируется только администраторам.
Но сложность не в этом. Все изменения этого поля должны хранится в истории.
То есть как поле платежей.
  • Вопрос задан
  • 2246 просмотров
Пригласить эксперта
Ответы на вопрос 1
xbreaker
@xbreaker
Создаете свое поле и вешаете его на хуки, например, функцией my_mega_field
add_action( 'show_user_profile', 'my_mega_field' );
add_action( 'edit_user_profile', 'my_mega_field' );

function my_mega_field( $user )
{
    ?>
        <table class="form-table">
            <tr>
                <th><label for="mego_pole">Mego Pole</label></th>
                <td><input type="text" name="mego_pole" value="<?php echo esc_attr(get_the_author_meta( 'mego_pole', $user->ID )); ?>" class="regular-text" /></td>
            </tr>
        </table>
    <?php
}


После этого создаете таблицу в БД, где будете хранить историю, а в функции сохранения значения своих полей добавляете запись в эту таблицу предыдущего значения (save_pole) и опять вешаете хуки, но уже на сохранение профиля:
add_action( 'personal_options_update', 'my_mega_save_function_with_history' );
add_action( 'edit_user_profile_update', 'my_mega_save_function_with_history' );

function my_mega_save_function_with_history( $user_id )
{
  save_old_pole( get_the_author_meta( 'mego_pole', $user->ID ) );
  update_user_meta( $user_id,'mego_pole', sanitize_text_field( $_POST['mego_pole'] ) );
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы