перенаправление wp-admin/profile.php на members/your-profile

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

Есть ли способ перенаправить /wp-admin/profile.php на /members/your-profile

Я не хочу, чтобы участники попадали на стандартную страницу wp-admin, а вместо этого хотели попасть на кастомную страницу участников.

Я попытался сделать перенаправление через приложение редиректа, но это не сработало.

Спасибо!

Вы можете попробовать использовать фильтр edit_profile_url:

add_filter( 'edit_profile_url', 'wpse419568_user_profile_redirect', 10, 3 );
/**
 * Фильтрует URL для профиля пользователя.
 *
 * @param  string $url     URL профиля.
 * @param  int    $user_id Идентификатор пользователя.
 * @param  string $scheme  Схема URL (например, http, https, login и т.д.).
 * @return string          Отфильтрованный URL.
 */
function wpse419568_user_profile_redirect( $url, $user_id, $scheme ) {
    // Не изменять URL для администраторов.
    if ( ! current_user_can( 'manage_options' ) ) {
        // Предполагает, что URL профиля использует идентификатор пользователя. Подкорректируйте по
        // вашему сайту.
        $url="/members/profile/" . absint( $user_id ); 
    }
    return $url;
}

Примечание: Этот код не протестирован и не гарантирует, что он будет работать. Он предназначен в качестве отправной точки, а не окончательного решения. Протестируйте его сначала на временном / тестовом сайте сначала.

Я сдался, пытаясь сделать это с помощью каких-либо функций в WordPress (версия 6.6.2, октябрь ’24). Скрипт profile.php просто устанавливает IS_PROFILE_PAGE и перенаправляет на user-edit.php, который практически сразу начинает работать, за исключением проверки current_user_can( ‘edit_users’ ) (обходится, если IS_PROFILE_PAGE установлен)… он не вызывает никаких хуков/фильтров, которые я мог бы заметить (если это мультисайт, то есть дополнительная проверка на редактирование других пользователей).

Поэтому я добавил это в .htaccess (Apache) прямо перед секцией # BEGIN WordPress:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^wp-admin/profile\.php members [R,L]
</IfModule>

Для вашего сайта, если он все еще такой же, как в вашем оригинальном вопросе, я полагаю, вам просто нужно изменить members на members/your-profile. (Смотрите директиву RewriteRule Apache ModRewrite, если вы хотите сделать что-то более сложное.)

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

Чтобы перенаправить /wp-admin/profile.php на /members/your-profile, вы можете использовать несколько методов. Я расскажу о двух основных способах: через функции WordPress и через файл .htaccess.

Способ 1: Использование функции WordPress

Одним из способов является использование фильтра edit_profile_url. Этот метод позволяет вам настроить URL для страницы профиля пользователей. Вот пример кода, который вы можете добавить в файл functions.php вашей темы:

add_filter( 'edit_profile_url', 'custom_user_profile_redirect', 10, 3 );
/**
 * Фильтрует URL для пользовательского профиля.
 *
 * @param string $url     URL профиля.
 * @param int    $user_id ID пользователя.
 * @param string $scheme  Схема URL (например, http, https, login и т.д.).
 * @return string         Отфильтрованный URL.
 */
function custom_user_profile_redirect( $url, $user_id, $scheme ) {
    // Не изменяйте URL для администраторов.
    if ( ! current_user_can( 'manage_options' ) ) {
        // Настройте URL для пользователей.
        $url = "/members/your-profile"; 
    }
    return $url;
}

Этот код проверяет, является ли пользователь администратором, и в случае, если нет, перенаправляет их на ваш пользовательский профиль. Убедитесь, что вы изменили путь /members/your-profile на нужный вам.

Способ 2: Использование .htaccess

Если первый способ не подходит, вы можете использовать файл .htaccess для выполнения перенаправления на уровне сервера. Добавьте следующий код в секцию вашего файла .htaccess, расположенного в корне вашего сайта WordPress, перед строкой # BEGIN WordPress:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^wp-admin/profile\.php$ /members/your-profile [R=301,L]
</IfModule>

Этот код будет перенаправлять все запросы к profile.php на указанный вами путь. Обратите внимание, что также следует заменить your-profile на актуальный путь, который вам нужен.

Примечание

  1. Тестирование: Прежде чем применить эти изменения на живом сайте, обязательно протестируйте их на тестовом или локальном окружении, чтобы убедиться, что все работает корректно.
  2. Резервное копирование: Рекомендуется сделать резервную копию вашего сайта и файла .htaccess перед внесением изменений.

Если у вас возникнут дополнительные вопросы или проблемы, пожалуйста, дайте знать!

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

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