sofiyaM38 27.01.2023 04:51

Как добавить возможность редактирования профиля пользователя с фронтенда WordPress-сайта?

Здравствуйте! У меня возникла проблема с добавлением возможности редактирования профиля пользователя с фронтенда WordPress-сайта. Я хотел бы, чтобы пользователи имели возможность изменять свои данные, такие как имя, фамилия, контактная информация и прочее, прямо на странице сайта без необходимости заходить в административную панель.

Я уже попробовала несколько различных подходов, но пока безуспешно. Вот пример кода, который я использовала, но он не работает:


<?php
/**
 * Добавляем код для редактирования профиля пользователя
 */

add_action('template_redirect', 'edit_profile_redirect');

function edit_profile_redirect() {
    if (is_page('редактирование-профиля')) {
        if (!is_user_logged_in()) {
            wp_redirect('вход');
            exit;
        }
    }
}

add_shortcode('edit_profile_form', 'edit_profile_form');

function edit_profile_form() {
    ob_start();

    // Форма для редактирования профиля

    ob_end_flush();
}
?>

Буду очень благодарна, если кто-то сможет помочь мне с этой проблемой и объяснить, что я делаю не так или что мне нужно добавить в свой код. Заранее спасибо!

Ответы:

StarDoc30 27.01.2023 05:12
Попробуйте проверить правильность путей к шаблону и убедитесь, что вы правильно указали страницу редактирования профиля в условии функции "is_page".
Queen45Creative 27.01.2023 05:24
Для добавления возможности редактирования профиля пользователя с фронтенда WordPress-сайта, рекомендую использовать плагины или готовые решения, которые уже включают необходимый функционал.
vasilisaKuz40 27.01.2023 05:36
- убедитесь, что вы правильно настроили шаблон страницы "редактирование-профиля" и используете правильные хуки и функции для обработки данных пользователя.
reginavol35 27.01.2023 05:59

Прежде всего, чтобы добавить возможность редактирования профиля пользователя с фронтенда WordPress-сайта, вы можете использовать функцию wp_update_user(). Эта функция позволяет обновлять данные пользователя, такие как имя, фамилия, контактная информация и другие. Вам также потребуется создать форму, в которой пользователи смогут внести изменения.

Вот пример кода, который вы можете использовать:


<?php
/**
 * Добавляем код для редактирования профиля пользователя
 */

add_shortcode('edit_profile_form', 'edit_profile_form');

function edit_profile_form() {
    ob_start();

    // Проверяем, авторизован ли пользователь
    if (!is_user_logged_in()) {
        echo 'Вы должны быть авторизованы, чтобы редактировать профиль.';
        return;
    }

    // Получаем текущего пользователя
    $current_user = wp_get_current_user();

    // Проверяем, была ли отправлена форма
    if (isset($_POST['submit'])) {
        // Получаем данные из формы
        $first_name = sanitize_text_field($_POST['first_name']);
        $last_name = sanitize_text_field($_POST['last_name']);
        $contact_info = sanitize_text_field($_POST['contact_info']);

        // Обновляем данные пользователя
        $user_data = array(
            'ID' => $current_user->ID,
            'first_name' => $first_name,
            'last_name' => $last_name,
            'contact_info' => $contact_info,
        );
        wp_update_user($user_data);

        // Выводим сообщение об успешном обновлении профиля
        echo '<p class="success-message">Профиль успешно обновлен.</p>';
    }

    // Выводим форму редактирования профиля
    ?>
    <form id="edit-profile-form" method="post" action="">
        <p>
            <label for="first_name">Имя:</label>
            <input type="text" name="first_name" value="first_name); ?>">
        </p>
        <p>
            <label for="last_name">Фамилия:</label>
            <input type="text" name="last_name" value="last_name); ?>">
        </p>
        <p>
            <label for="contact_info">Контактная информация:</label>
            <textarea name="contact_info">contact_info); ?></textarea>
        </p>
        <p>
            <input type="submit" name="submit" value="Сохранить изменения">
        </p>
    </form>
    <?php

    return ob_get_clean();
}
?>

Вы можете добавить этот код в файл functions.php вашей темы или использовать плагин, такой как "Code Snippets", чтобы добавить его без изменения файла functions.php.

Чтобы отобразить форму редактирования профиля на странице вашего сайта, вы можете использовать шорткод [edit_profile_form]. Просто добавьте этот шорткод на нужной вам странице. Например:


[edit_profile_form]

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

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


Добавить ответ