Как создать страницу для редактирования профиля пользователя

Пример создания отдельной страницы для редактированиями пользователями своего профиля. Доступ к ней имеют только зарегистрированные пользователи.
👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

Так как вход в административную часть блога сопровождается потенциальными рисками для безопасности блога (забудешь что-нибудь закрыть для пользователй, и потом бед не оберешься), то многие администраторы вообще закрывают туда вход всем, кроме себя. Однако если регистрация в блоге все же необходима, то встает проблема с редактированием пользователями своих данных. Если для регистрации не нужно попадать внурь блога, то чтобы изменить свой профиль, пользователь как-то должен добраться до необходимых для этого полей. Дать возможность отредактировать свои данные, изменить пароль можно, воспользовавшись специальными плагинами (например, WP User Frontend), либо создав отдельную страницу.

Чтобы создать сделать страницу для редактирования пользователями своих данных профиля, нужно создать шаблон такой страницы. Для этого создайте в папке используемой темы файл user-profile.php, и вставьте в него следующий код:

 $current_user->id, 'user_pass' => esc_attr( $_POST['pass1'] ) ) );
        else
            $error = __('The passwords you entered do not match.  Your password was not updated.', 'profile');
    }

    /* Update user information. */
    if ( !empty( $_POST['url'] ) )
        update_usermeta( $current_user->id, 'user_url', esc_url( $_POST['url'] ) );
    if ( !empty( $_POST['email'] ) )
        update_usermeta( $current_user->id, 'user_email', esc_attr( $_POST['email'] ) );
    if ( !empty( $_POST['first-name'] ) )
        update_usermeta( $current_user->id, 'first_name', esc_attr( $_POST['first-name'] ) );
    if ( !empty( $_POST['last-name'] ) )
        update_usermeta($current_user->id, 'last_name', esc_attr( $_POST['last-name'] ) );
    if ( !empty( $_POST['description'] ) )
        update_usermeta( $current_user->id, 'description', esc_attr( $_POST['description'] ) );

    /* Redirect so the page will show updated info. */
    if ( !$error ) {
        wp_redirect( get_permalink() );
        exit;
    }
}
?>


        <div id="post-">
            <div class="entry-content entry">
                
                
                        <p class="warning">
                            
                        </p><!-- .warning -->
                
                    <?php if ( $error ) echo '<p class="error">' . $error . '</p>'; ?>
                    <form method="post" id="adduser" action="">
                        <p class="form-username">
                            <label for="first-name"></label>
                            <input class="text-input" name="first-name" type="text" id="first-name" value="id ); ?>" />
                        </p><!-- .form-username -->
                        <p class="form-username">
                            <label for="last-name"></label>
                            <input class="text-input" name="last-name" type="text" id="last-name" value="id ); ?>" />
                        </p><!-- .form-username -->
                        <p class="form-email">
                            <label for="email"></label>
                            <input class="text-input" name="email" type="text" id="email" value="id ); ?>" />
                        </p><!-- .form-email -->
                        <p class="form-url">
                            <label for="url"></label>
                            <input class="text-input" name="url" type="text" id="url" value="id ); ?>" />
                        </p><!-- .form-url -->
                        <p class="form-password">
                            <label for="pass1"> </label>
                            
                        </p><script data-noptimize="" data-wpfc-render="false">
/* <![CDATA[ */
fpm_start( "true" );
/* ]]> */
</script>
<!-- .form-password -->
                        <p class="form-password">
                            <label for="pass2"></label>
                            
                        </p><!-- .form-password -->
                        <p class="form-textarea">
                            <label for="description"></label>
                            <textarea name="description" id="description" rows="3" cols="50">id ); ?></textarea>
                        </p><!-- .form-textarea -->
                        <p class="form-submit">
                            
                            <input name="updateuser" type="submit" id="updateuser" class="submit button" value="" />
                            
                            
                        </p><!-- .form-submit -->
                    </form><!-- #adduser -->
                    
                </div><!-- .entry-content -->
            </div><!-- .hentry .post -->
            
            
        
            <p class="no-data">
                
            </p><!-- .no-data -->
        

После этого зайдите в раздел страниц и создайте новую страницу. При создании страницы выберите шаблон User Profile. Все, страница редактирования профиля создана. Доступ к ней будут иметь только зарегистрированные пользователи.

Для того, чтобы страница редактирования профиля была похожа на все остальные страницы блога, для ее создания за основу можно взять шаблон обычной страницы page.php.

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

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

  1. XA3AP

    Здравствуйте, tiaurus. А Вы проверяли работоспособность кода? У меня кнопка сохранить изменения не хочет работать. Может быть будут мысли, как заставить её сохранять данные?

    Ответить
  2. FoMurJIom

    Работает спасиб, очень полезная статья

    Ответить
  3. DimaDodonov

    А страницу создания поста! как то так же реально реализовать?

    Ответить
    1. tiaurus автор

      Посмотрите плагин WP User Frontend.

      Ответить
  4. seoperin

    У меня данный код работает, но если в самом начале подключить get_header() ты при сохранении формы всплывает ошибка.

    Ответить
  5. pe4enjka

    Доброго времени суток. Честно сказать информация скудная. Т.к допустим я не совсем понял, создал файл с именем user-profile.php, загрузил в используемую тему, создал страницу, но вот как сделать редирект на этот файл и не описано: «Для того, чтобы страница редактирования профиля была похожа на все остальные страницы блога, для ее создания за основу можно взять шаблон обычной страницы page.php» вопрос как это сделать? Просто вы уж расписываете делайте это как-то с большим энтузиазмом. Ведь не все люди могут понять с полу слова

    Ответить
  6. Денис

    У меня не стилизируется страница с кодом

    Ответить
  7. Мария

    Добрый день.
    Все сделала, получилось, в дизайн «вписала».
    Страница находится по адресу site.ru/profile
    Но у меня возник вопрос. Сейчас, если заходишь на страницу не авторизовавшись (а я уверена, что подписчики так и будут заходить), то выходит просто надпись «Вы должны быть авторизованы». Не хочется их отправлять на /wp-login.php. Подскажите, пожалуйста, как сделать, чтобы сразу на этой странице форма авторизации была? То есть, если заходит не авторизованный участник, то он вводит логин/пароль и ему становятся видны, собственно, поля профиля. Буду очень благодарна!

    Ответить
    1. tiaurus автор

      Можно сделать так: если пользователь не авторизован, то открывать страницу входа, и сразу после входа делать редирект на страницу профиля. Для этого нужно в строке 48 заменить

      
      

      на

       
      

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

      Ответить
      1. Мария

        Спасибо Вам большое! Попробую сделать!

        Ответить
  8. Рафаэль

    Здравствуйте! А как вывести реферальную ссылку и информацию о рефералах от плагина Affiliate Plus на странице «Мой аккаунт» (создается автоматически плагином woocommerce)?
    Affiliate Plus всю информацию выводит в профиле пользователя «внутри» вордпресс, в админке. Не получилось вывести, напротив надписи «Ваша ссылка» пусто, сколько рефералов — пусто. Помогите решить?

    Ответить
  9. Uthvfy

    конченный код. $current_user->id, ‘user_pass’ => esc_attr( $_POST[‘pass1’] ) ) ); последние две скобки куда засунуть? А последнюю в какое место?

    Ответить