Перенаправление после входа в Wordpress

35

Я создаю настраиваемую тему Wordpress на основе существующего сайта.

Я хочу использовать альтернативную панель, которую я создал.

Как я могу направить пользователя в 'news.php после входа вместо < <21 > ?

-

РЕДАКТИРОВАТЬ: иметь рабочий плагин для этого, но щедрость по-прежнему доступна для всех, кто может найти ручной способ сделать это через functions.php, поскольку он будет более безопасным, а затем использовать сторонний плагин.

  • 0
    Где находится news.php - в интерфейсе пользователя или в области администрирования (т. news.php панели инструментов, т. news.php /wp-admin/... )? Не могли бы вы предоставить полный путь? example.com/... и что потом?
Теги:
wordpress-theming
redirect

11 ответов

60
Лучший ответ

Это должно решить вашу проблему. Адаптированный из найденного ответа здесь.

function admin_default_page() {
  return '/new-dashboard-url';
}

add_filter('login_redirect', 'admin_default_page');
  • 0
    К сожалению, мой файл functions.php не содержит ничего похожего на человека, который разместил на этом сайте.
  • 7
    Это работает для меня! Файл functions.php не должен содержать ничего подобного, просто добавьте этот код в файл!
Показать ещё 2 комментария
16

Принятый ответ очень ошибочен. Никогда не следует изменять WordPress Core. Некоторые изменения, которые вы производите по своей прихоти, могут быть потеряны не только при внесении изменений, но и в других целях или даже угрожают безопасности вашего сайта.

Action Hooks and Filters включены в ядро, что позволяет изменять функциональность без изменения кода.

Пример использования фильтра login_redirect для перенаправления определенных пользователей можно найти здесь и значительно более надежное решение вашей проблемы.

Для вашей конкретной проблемы вы хотите сделать это:

function login_redirect( $redirect_to, $request, $user ){
    return home_url('news.php');
}
add_filter( 'login_redirect', 'login_redirect', 10, 3 );
  • 1
    Главное, что не учитывается в принятом ответе, и ваш ответ - какой файл должен быть отредактирован. Это файл functions.php текущей активной темы. Правильно?
  • 0
    @ ted.strauss Это самое простое место для этой логики, да. Есть несколько мест, куда он может пойти, но они обычно включают создание плагина.
Показать ещё 1 комментарий
12

Это может помочь. Peter Login Redirect

Перенесите пользователей в разные местоположения после входа в систему и выхода из системы.

Определите набор правил переадресации для определенных пользователей, пользователей с определенными ролями, пользователей с определенными возможностями и правила для всех остальных пользователей. Кроме того, установите URL-адрес переадресации для последующей регистрации. Все это управляется в настройках > Переадресация входа/выхода из системы.

Вы можете использовать синтаксис [variable]username[/variable] в своих URL-адресах, чтобы система создавала динамический URL-адрес при каждом входе в систему, заменяя этот текст на имя пользователя. В дополнение к имени пользователя есть "userslug", "homeurl", "siteurl", "postid-23", "http_referer", и вы также можете добавить свои собственные "переменные" URL-адреса...

  • 0
    Работает отлично!
  • 1
    @PhilipK Я рад. Примите ответ, если он работает хорошо.
Показать ещё 1 комментарий
7
add_action('wp_head','redirect_admin');
function redirect_admin(){
  if(is_admin()){
    wp_redirect(WP_HOME.'/news.php');
    die; // You have to die here
  }
}

Или если вы хотите перенаправить других пользователей:

add_action('wp_head','redirect_admin');
function redirect_admin(){
  if(is_admin()&&!current_user_can('level_10')){
    wp_redirect(WP_HOME.'/news.php');
    die; // You have to die here
  }
}
  • 8
    +1 за использование «Ты должен умереть здесь».
  • 0
    смеется .. это смешно: D
Показать ещё 1 комментарий
2

Если у вас есть php 5.3+, вы можете использовать анонимную функцию:

add_filter( 'login_redirect', function() { return site_url('news'); } );
2

Может помочь Theme My Login - он позволяет перенаправлять пользователей определенных ролей на определенные страницы.

  • 1
    Установил этот плагин, и я больше не мог выйти из своей учетной записи.
1

Попробуйте это, он работает для любого перенаправления на wordpress

add_filter('woocommerce_login_redirect', 'wc_login_redirect'); 

function wc_login_redirect( $redirect_to ) {

   $redirect_to = 'PUT HERE URL OF THE PAGE';
   return $redirect_to;

}
1

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

Как уже говорилось другими (ответы Дэна и Трэвиса), правильный ответ заключается в использовании фильтра login_redirect.

0

Чтобы глобально перенаправить после успешного входа в систему, найдите этот код в wp-login.php в разделе.

   <form name="loginform" id="loginform" action="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?>" method="post">

<input type="hidden" name="redirect_to" value="<?php echo esc_attr($redirect_to); ?>" />

и замените <?php echo esc_attr($redirect_to); ?> на свой URL, где вы хотите перенаправить. URL-адрес должен начинаться с http://и заканчиваться на/другой мудрой странице, перенаправлять по умолчанию.

Выполните одно и то же преобразование формы после регистрации в том же файле, но в разделе <form name="registerform">.

0
// Used theme functions.php  
add_action('login_form', 'redirect_after_login'); 
function redirect_after_login() 
{     
global $redirect_to; 
if   (!isset($_GET['redirect_to'])) 
{ 
$redirect_to =   get_option('sample-page');
//  sample-page = your page name after site_url
} }
0

Файл functions.php не имеет ничего общего с переадресацией на вход, что вы должны рассматривать как файл wp-login.php, вы можете фактически изменить весь интерфейс входа в систему и заставить пользователей перенаправлять на ваши пользовательские страницы вместо каталога /wp -admin/.

Откройте файл с помощью Блокнота, если вы используете Windows или любой текстовый редактор, Prese Ctrl + F (в окне) Найдите "wp-admin/" и измените его на папку, которую вы хотите перенаправить, после входа в систему, все еще в том же файле. Нажмите Ctrl + F, найдите "admin_url" и измените имя файла, имя файла по умолчанию есть "profile.php"... после просто сохранить и попробовать.

if ( !$user->has_cap('edit_posts') && ( empty( $redirect_to ) || $redirect_to == 'wp-admin/' || $redirect_to == admin_url() ) )
        $redirect_to = admin_url('profile.php');
    wp_safe_redirect($redirect_to);
    exit();

Или вы можете использовать "плагин регистрации-входа" http://wordpress.org/extend/plugins/registration-login/, просто отредактируйте URL-адреса перенаправления и ссылки туда, где вы хотите он перенаправляется после входа в систему, и у вас есть собственный собственный профиль.

  • 3
    Есть ли способ сделать это без изменения основных файлов WP?
  • 0
    @ Эмерсон, да. stackoverflow.com/a/15624293/866618

Ещё вопросы

Сообщество Overcoder
Наверх
Меню