Кнопка меню, которая ссылается на различные страницы для уникального пользователя?

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

Существует ли способ создать кнопку меню, которая будет ссылаться на разные страницы для каждого уникального пользователя?

На данный момент я использовал плагины: User Specific Content, Peter’s Login Redirect и Them my Login.

По сути, когда пользователь входит в систему, он может получить информацию, доступную только ему, но нет возможности вернуться, если пользователь переходит на другую страницу. Как сделать ссылку для возвращения в меню?

Для ясности, я хочу сделать кнопку на панели меню, по которой они смогут перейти на свою личную страницу. Я довольно новичок в WordPress и не очень знаком с HTML/CSS и т.д.

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

Но вы можете модифицировать/добавить свой шаблон и использовать $_SERVER['HTTP_REFERER'] (руководство PHP), чтобы вернуться на сайт, где пользователь нажал на ссылку для перехода на актуальную страницу. Но эта информация также может быть изменена или недоступна из-за настроек конфиденциальности/плагинов или других причин, так что убедитесь, что это учтено.


Обновление: Благодаря гораздо более ясной информации из комментариев, вы можете сделать это.

  1. Создайте шаблон страницы, названный “Redirect to User Page” или что-то в этом роде. Посмотрите здесь, чтобы узнать, как это работает.
  2. Поместите это в файл шаблона, кроме необходимых частей (вам может понадобиться настроить это под свои нужды):

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 >';
}

Это сначала проверит, вошел ли пользователь в систему, затем получит его данные и, наконец, перенаправит на (под)страницу, которую вы определите, где его имя для входа будет постоянной ссылкой.

  1. Настройте страницу, которая использует пользовательский шаблон страницы, и выберите для нее приятную постоянную ссылку.

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

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

Если у вас есть экземпляр 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, структуру шаблонов и принцип работы меню. В данной статье мы подробно рассмотрим весь процесс, чтобы обеспечить удобный и понятный способ навигации для каждого пользователя вашего сайта.

Основные шаги для реализации решения

  1. Создание индивидуального шаблона страницы:
    Первым шагом является создание кастомного шаблона страницы, который будет перенаправлять пользователей на их уникальную страницу. В вашей теме 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;
    }

    Этот код проверяет, авторизован ли пользователь, и если да, перенаправляет его на его страницу с использованием его логина.

  2. Создание страницы с использованием кастомного шаблона:
    Теперь вам необходимо создать новую страницу в админ-панели WordPress и назначить ей только что созданный шаблон. Назначьте ему понятное название, например "Моя страница", и опубликуйте.

  3. Добавление персонифицированной ссылки в меню:
    На этом этапе мы добавим динамическую ссылку в меню, которая будет доступна только для авторизованных пользователей. Для этого откройте файл 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. Это позволяет нам динамически добавлять ссылки в зависимости от состояния авторизации пользователя.

Заключение

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

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

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

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