Профиль пользователя на фронтенде

Вопрос или проблема

Я хочу, чтобы каждый пользователь имел профиль на фронт-энде моего сайта. Поэтому я хочу зайти на сайт website.com/user/user-name и увидеть всю информацию об этом пользователе. Возможно ли это каким-либо образом?

Я бы хотел сделать это без плагина. Все, что я нашел в Google, включало плагин, такой как Front-End Only Users..

Вам нужно сделать 2 разных вещи, чтобы добиться этого.

Структура URL:

Получить URL в желаемом формате: http://website.com/user/имя-пользователя

По умолчанию URL архива пользователя выглядит как http://website.com/author/имя-пользователя

Существует плагин для изменения слага автора, установите этот плагин и задайте слог user

Плагин: https://wordpress.org/plugins/rename-author-slug/

[Примечание: я автор этого плагина]

Отображение информации:

Настройте файл author.php в каталоге темы и покажите конкретную информацию.

В этом файле вы можете получить любую информацию о пользователе.

Чтобы получить отображаемое имя пользователя, просто используйте <?php the_author_meta('display_name' ); ?>

Или чтобы получить его имя, используйте <?php the_author_meta('first_name' ); ?>

Я бы сделал это немного по-другому. У меня есть похожий случай, но я создал пользовательский тип записи с полной пользовательской структурой на профиле этого пользователя. Используя ACF, я связал учетную запись пользователя с записью в пользовательском файле записи. Таким образом, у вас есть полный контроль над тем, как структурирован профиль пользователя и какие поля нужны.

Ответ или решение

Для реализации пользовательского профиля на фронтенде вашего сайта, чтобы каждый пользователь мог посещать адрес website.com/user/user-name и видеть всю свою информацию, необходимо выполнить несколько шагов.

1. Структура URL

По умолчанию URL для личного кабинета пользователя выглядит как website.com/author/user-name. Чтобы изменить его на website.com/user/user-name, вы можете использовать функцию перезаписи URL в WordPress, а именно изменить базовый slug для авторов.

Чтобы сделать это без использования плагина, выполните следующее:

  1. Добавьте код в файл functions.php вашей темы:

    add_action('init', function() {
       add_rewrite_rule('^user/([a-zA-Z0-9-]+)/?', 'index.php?author_name=$matches[1]', 'top');
    });
  2. Сбросьте правила переписывания после добавления кода. Это можно сделать, перейдя в "Настройки" -> "Постоянные ссылки" и просто нажав "Сохранить изменения".

2. Отображение информации

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

  1. Создайте файл author.php (если его еще нет) в папке вашей темы.
  2. Используйте следующие функции для получения информации о пользователе:

    <?php
    if (have_posts()) :
       while (have_posts()) : the_post();
           $user_id = get_the_author_meta('ID');
           $display_name = get_the_author_meta('display_name', $user_id);
           $first_name = get_the_author_meta('first_name', $user_id);
           $last_name = get_the_author_meta('last_name', $user_id);
           $description = get_the_author_meta('description', $user_id);
           $user_email = get_the_author_meta('user_email', $user_id);
           // Вывод информации
           echo '<h1>' . esc_html($display_name) . '</h1>';
           echo '<p>Имя: ' . esc_html($first_name) . '</p>';
           echo '<p>Фамилия: ' . esc_html($last_name) . '</p>';
           echo '<p>' . esc_html($description) . '</p>';
           echo '<p>Email: ' . esc_html($user_email) . '</p>';
       endwhile;
    else :
       echo '<p>Пользователь не найден.</p>';
    endif;
    ?>

Альтернативный способ — создание пользовательского типа записей

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

  1. Создайте пользовательский тип записей в functions.php:

    function create_user_profile_cpt() {
       $args = [
           'label' => 'Профили пользователей',
           'public' => true,
           'has_archive' => true,
           'rewrite' => ['slug' => 'user'],
           'supports' => ['title', 'editor', 'custom-fields'],
       ];
       register_post_type('user_profile', $args);
    }
    add_action('init', 'create_user_profile_cpt');
  2. Свяжите посты с пользователями с помощью ACF (Advanced Custom Fields) или вручную добавляйте метаданные в мета-поле постов. Таким образом, вы сможете гибко управлять данными профиля.

Заключение

Следуя этим шагам, вы сможете создать пользовательские профили без использования плагинов. Вы получите полный контроль над структурой и отображением информации пользователя непосредственно на вашем сайте. Если будут вопросы или потребуется дополнительная настройка, не стесняйтесь спрашивать.

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

Капча загружается...