Получите имя пользователя WordPress для настройки URL

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

В данный момент я пытаюсь получить текущее имя пользователя, чтобы добавить его в URL. Пользователь должен иметь возможность переходить на свою собственную панель управления, которая находится по адресу domain.com/username. Есть ли способ извлечь имя пользователя и добавить его в качестве переменной в URL?

Спасибо!

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

if ( is_user_logged_in() ) {

    global $current_user;
    $current_user = wp_get_current_user();

    // получаем имя пользователя:
    $username = $current_user->user_login;

    // создаем URL:
    $url = home_url( $username );
}

Вот документация по основным функциям WP, которые я использовал выше:

Кроме того, что ответ от 31 декабря 2019 года говорил, я думаю, что этот ответ сочетает в себе несколько ответов, данных на этом сайте. Но поскольку этот веб-сайт предпочитает воспроизведение вместо ссылок, я предоставлю возможное решение – включая вопрос сегодняшнего дня (1 час назад, согласно текущему экрану).

function prefixed_redirect() {
    global $wp;
    if ( home_url( $wp->request ) == 'your_url' )  { // или, возможно, что-то более специфичное.
        require_once TEMPLATEPATH . '/my-specific-template.php';
    }
}
add_action( 'template_redirect', 'prefixed_redirect' );

Я не тестировал этот код, но он поддерживается следующими ссылками: https://stackoverflow.com/questions/51028362/what-is-the-alternative-of-serverhttp-host-and-serverrequest-uri-for и Как загрузить новую страницу шаблона в соответствии с определенным URL?.

Теперь в случае добавления меню у меня есть этот пример:

function prefixed_nav_menu_item( $items ) {
    $user = wp_get_current_user();
    $link = '<li><a href="' . get_permalink( $user>get( 'slug' ) ) . '">' . $user->get( 'login' ) . '</a></li>';
    $items = $items . $link;

    return $items;
}
add_filter( 'wp_nav_menu_items', 'prefixed_nav_menu_item' );

Это также не тестировалось, но согласно https://developer.wordpress.org/reference/functions/wp_get_current_user/ и https://developer.wordpress.org/reference/classes/wp_user/, это приведет вас в правильном направлении.

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

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

Чтобы получить имя пользователя WordPress и использовать его для настройки URL, существует несколько важных шагов, которые необходимо выполнить. Во первых, пользователь должен быть авторизован, чтобы вы могли получить "текущего" пользователя. Ниже приведена подробная инструкция, как это сделать, с примерами кода и объяснением.

1. Проверка авторизации пользователя

Перед тем как обращаться к данным пользователя, убедитесь, что он авторизован. Для этого используйте функцию is_user_logged_in(). Если пользователь прошел авторизацию, вы можете продолжить.

if ( is_user_logged_in() ) {
    global $current_user;
    $current_user = wp_get_current_user();

    // Получение имени пользователя
    $username = $current_user->user_login;

    // Формирование URL
    $url = home_url( $username );
}

2. Использование функции wp_get_current_user()

Функция wp_get_current_user() возвращает объект текущего пользователя, который содержит всю необходимую информацию, включая имя пользователя. Для получения имени пользователя используйте свойство user_login.

3. Формирование URL

Для создания URL можно использовать функцию home_url(), которая возвращает адрес главной страницы сайта:

$url = home_url( '/' . $username );

Этот код создаст URL в формате http://yourdomain.com/username.

4. Перенаправление на пользовательский шаблон (опционально)

Если вы хотите направить пользователей на отдельный шаблон, когда они пытаются получить доступ к своему URL, вы можете использовать хук template_redirect. Пример кода:

function prefixed_redirect() {
    global $wp;

    // Проверка, совпадает ли запрошенный URL с шаблоном пользователя
    if ( is_user_logged_in() && $wp->request === wp_get_current_user()->user_login ) {
        require_once TEMPLATEPATH . '/my-specific-template.php';
        exit; // предотвращает дальнейшую загрузку базового шаблона
    }
}
add_action( 'template_redirect', 'prefixed_redirect' );

5. Добавление ссылки в меню

Если вам нужно добавить имя пользователя в навигационное меню, выполните следующие шаги:

function prefixed_nav_menu_item( $items ) {
    $user = wp_get_current_user();

    // Добавляем ссылку с именем пользователя
    if ( $user->exists() ) {
        $link = '<li><a href="' . home_url( '/' . $user->user_login ) . '">' . esc_html( $user->user_login ) . '</a></li>';
        $items .= $link;
    }

    return $items;
}
add_filter( 'wp_nav_menu_items', 'prefixed_nav_menu_item' );

Заключение

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

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

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