Вопрос или проблема
Существует ли способ создать кнопку меню, которая будет ссылаться на разные страницы для каждого уникального пользователя?
На данный момент я использовал плагины: User Specific Content, Peter’s Login Redirect и Them my Login.
По сути, когда пользователь входит в систему, он может получить информацию, доступную только ему, но нет возможности вернуться, если пользователь переходит на другую страницу. Как сделать ссылку для возвращения в меню?
Для ясности, я хочу сделать кнопку на панели меню, по которой они смогут перейти на свою личную страницу. Я довольно новичок в WordPress и не очень знаком с HTML/CSS и т.д.
Если вы хотите сделать что-то вроде ссылки “Назад на предыдущую страницу”, это, вероятно, не сработает с системой меню WP.
Но вы можете модифицировать/добавить свой шаблон и использовать $_SERVER['HTTP_REFERER']
(руководство PHP), чтобы вернуться на сайт, где пользователь нажал на ссылку для перехода на актуальную страницу. Но эта информация также может быть изменена или недоступна из-за настроек конфиденциальности/плагинов или других причин, так что убедитесь, что это учтено.
Обновление: Благодаря гораздо более ясной информации из комментариев, вы можете сделать это.
- Создайте шаблон страницы, названный “Redirect to User Page” или что-то в этом роде. Посмотрите здесь, чтобы узнать, как это работает.
- Поместите это в файл шаблона, кроме необходимых частей (вам может понадобиться настроить это под свои нужды):
if(is_user_logged_in()) {
$user_info = get_userdata(get_current_user_id());
$url="http:// www. example. com/users/".$user_info->user_login."https://wordpress.stackexchange.com/";
$string = '< script type="text/javascript" >';
$string .= 'window.location = "' . $url . '"';
$string .= '< /script >';
}
Это сначала проверит, вошел ли пользователь в систему, затем получит его данные и, наконец, перенаправит на (под)страницу, которую вы определите, где его имя для входа будет постоянной ссылкой.
- Настройте страницу, которая использует пользовательский шаблон страницы, и выберите для нее приятную постоянную ссылку.
Затем вы можете ссылаться на эту страницу в меню. Вам также следует определить случай “иначе” или организовать так, чтобы не показывать эту ссылку, когда вы не вошли в систему.
Обязательно ознакомьтесь с функциями, которые я использовал здесь. Не могу опубликовать больше двух ссылок прямо сейчас, но вам действительно следует понять, что это делает и почему, иначе вам не будет весело его использовать.
Если у вас есть экземпляр wp_nav_menu
для вашего меню, вы можете добавить фильтр, чтобы динамически добавлять элементы меню, когда меню выводится на страницу.
Фильтр для всех навигационных меню – wp_nav_menu_items
.
Для конкретных слагов меню фильтр – wp_nav_menu_{$menu->slug}_items
. Например, если ваш слаг меню – primary
, фильтр будет wp_nav_menu_primary_items
.
Вот пример, который, возможно, соответствует вашим нуждам, основываясь на вашем описании в комментариях.
function wpd_nav_menu_items( $items ){
// если пользователь вошел в систему
if( is_user_logged_in() ){
// получить данные текущего пользователя
global $current_user;
get_currentuserinfo();
// URL и название элемента меню
$url = home_url( "https://wordpress.stackexchange.com/" . $current_user->user_login . "https://wordpress.stackexchange.com/" );
$title = $current_user->user_firstname . '\'s page';
// добавить элемент меню в конец
$items .= '<li><a href="' . $url . '">' . $title . '</a></li>';
}
return $items;
}
add_filter( 'wp_nav_menu_items', 'wpd_nav_menu_items' );
Ответ или решение
Создание персонализированной кнопки меню, которая будет вести к индивидуальным страницам пользователей в WordPress, требует некоторого понимания PHP, структуру шаблонов и принцип работы меню. В данной статье мы подробно рассмотрим весь процесс, чтобы обеспечить удобный и понятный способ навигации для каждого пользователя вашего сайта.
Основные шаги для реализации решения
-
Создание индивидуального шаблона страницы:
Первым шагом является создание кастомного шаблона страницы, который будет перенаправлять пользователей на их уникальную страницу. В вашей теме WordPress создайте файл с именемtemplate-user-redirect.php
и добавьте в него следующий код:<?php /* Template Name: Redirect to User Page */ if (is_user_logged_in()) { $user_info = get_userdata(get_current_user_id()); $url = home_url('/users/' . $user_info->user_nicename); // Обратите внимание, что здесь используется user_nicename для корректного формирования URL // Перенаправление пользователя wp_redirect($url); exit; }
Этот код проверяет, авторизован ли пользователь, и если да, перенаправляет его на его страницу с использованием его логина.
-
Создание страницы с использованием кастомного шаблона:
Теперь вам необходимо создать новую страницу в админ-панели WordPress и назначить ей только что созданный шаблон. Назначьте ему понятное название, например "Моя страница", и опубликуйте. -
Добавление персонифицированной ссылки в меню:
На этом этапе мы добавим динамическую ссылку в меню, которая будет доступна только для авторизованных пользователей. Для этого откройте файлfunctions.php
вашей темы и добавьте следующий код:function add_user_profile_link($items) { if (is_user_logged_in()) { $current_user = wp_get_current_user(); $url = home_url('/users/' . $current_user->user_nicename); $items .= '<li><a href="' . esc_url($url) . '">' . esc_html($current_user->display_name) . '\'s Page</a></li>'; } return $items; } add_filter('wp_nav_menu_items', 'add_user_profile_link');
Объяснение кода
- Проверка авторизации:
is_user_logged_in()
— функция, которая проверяет, вошел ли пользователь на сайт. Если пользователь вошел, мы продолжаем. - Получение данных пользователя:
wp_get_current_user()
возвращает информацию о текущем пользователе. Это позволит нам получить нужные данные, такие как логин и отображаемое имя. - Формирование ссылки: Мы создаем URL для уникальной страницы пользователя с использованием
home_url()
и дополнительно добавляемuser_nicename
для формирования корректного адреса. - Добавление элемента меню: Для добавления элемента в меню мы используем
wp_nav_menu_items
. Это позволяет нам динамически добавлять ссылки в зависимости от состояния авторизации пользователя.
Заключение
Теперь, когда пользователь входит на ваш сайт, в меню автоматически добавляется персонализированная ссылка на его страницу. Это решение улучшает пользовательский опыт, позволяя легко возвращаться на свою профильную страницу. Важно также протестировать функциональность и убедиться, что все ссылки работают корректно, особенно при использовании различных пользовательских ролей.
Создание индивидуальных пользовательских страниц и динамических меню не только увеличивает доступность информации, но и делает ваш сайт более интерактивным. Убедитесь, что вы регулярно обновляете и тестируете вашу реализацию для наилучшего функционирования.