Вопрос или проблема
Есть ли способ перенаправить /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
на актуальный путь, который вам нужен.
Примечание
- Тестирование: Прежде чем применить эти изменения на живом сайте, обязательно протестируйте их на тестовом или локальном окружении, чтобы убедиться, что все работает корректно.
- Резервное копирование: Рекомендуется сделать резервную копию вашего сайта и файла
.htaccess
перед внесением изменений.
Если у вас возникнут дополнительные вопросы или проблемы, пожалуйста, дайте знать!