Вопрос или проблема
Я хочу, чтобы каждый пользователь имел профиль на фронт-энде моего сайта. Поэтому я хочу зайти на сайт 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 для авторов.
Чтобы сделать это без использования плагина, выполните следующее:
-
Добавьте код в файл functions.php вашей темы:
add_action('init', function() { add_rewrite_rule('^user/([a-zA-Z0-9-]+)/?', 'index.php?author_name=$matches[1]', 'top'); });
-
Сбросьте правила переписывания после добавления кода. Это можно сделать, перейдя в "Настройки" -> "Постоянные ссылки" и просто нажав "Сохранить изменения".
2. Отображение информации
Для отображения информации о пользователе необходимо настроить файл шаблона author.php
в каталоге вашей темы. Этот файл будет формировать страницу для каждого пользователя. Ниже приведены шаги:
- Создайте файл author.php (если его еще нет) в папке вашей темы.
-
Используйте следующие функции для получения информации о пользователе:
<?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; ?>
Альтернативный способ — создание пользовательского типа записей
Если вам требуется более сложная структура профиля, вы можете создать пользовательский тип записей. Это позволит вам добавить любые желаемые поля и настраивать их отображение.
-
Создайте пользовательский тип записей в 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');
-
Свяжите посты с пользователями с помощью ACF (Advanced Custom Fields) или вручную добавляйте метаданные в мета-поле постов. Таким образом, вы сможете гибко управлять данными профиля.
Заключение
Следуя этим шагам, вы сможете создать пользовательские профили без использования плагинов. Вы получите полный контроль над структурой и отображением информации пользователя непосредственно на вашем сайте. Если будут вопросы или потребуется дополнительная настройка, не стесняйтесь спрашивать.