Я создаю настраиваемую тему Wordpress на основе существующего сайта.
Я хочу использовать альтернативную панель, которую я создал.
Как я могу направить пользователя в 'news.php
после входа вместо < <21 > ?
-
РЕДАКТИРОВАТЬ: иметь рабочий плагин для этого, но щедрость по-прежнему доступна для всех, кто может найти ручной способ сделать это через functions.php, поскольку он будет более безопасным, а затем использовать сторонний плагин.
Это должно решить вашу проблему. Адаптированный из найденного ответа здесь.
function admin_default_page() {
return '/new-dashboard-url';
}
add_filter('login_redirect', 'admin_default_page');
Принятый ответ очень ошибочен. Никогда не следует изменять 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 );
Это может помочь. Peter Login Redirect
Перенесите пользователей в разные местоположения после входа в систему и выхода из системы.
Определите набор правил переадресации для определенных пользователей, пользователей с определенными ролями, пользователей с определенными возможностями и правила для всех остальных пользователей. Кроме того, установите URL-адрес переадресации для последующей регистрации. Все это управляется в настройках > Переадресация входа/выхода из системы.
Вы можете использовать синтаксис
[variable]username[/variable]
в своих URL-адресах, чтобы система создавала динамический URL-адрес при каждом входе в систему, заменяя этот текст на имя пользователя. В дополнение к имени пользователя есть "userslug", "homeurl", "siteurl", "postid-23", "http_referer", и вы также можете добавить свои собственные "переменные" URL-адреса...
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
}
}
Если у вас есть php 5.3+, вы можете использовать анонимную функцию:
add_filter( 'login_redirect', function() { return site_url('news'); } );
Может помочь Theme My Login - он позволяет перенаправлять пользователей определенных ролей на определенные страницы.
Попробуйте это, он работает для любого перенаправления на 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;
}
Принятый ответ явно не является хорошим ответом! Он может решить вашу проблему некоторое время, но что произойдет в следующий раз, когда вы обновите установку Wordpress? Ваши основные файлы могут быть переопределены, и вы потеряете все свои изменения.
Как уже говорилось другими (ответы Дэна и Трэвиса), правильный ответ заключается в использовании фильтра login_redirect
.
Чтобы глобально перенаправить после успешного входа в систему, найдите этот код в 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">
.
// 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
} }
Файл 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-адреса перенаправления и ссылки туда, где вы хотите он перенаправляется после входа в систему, и у вас есть собственный собственный профиль.
news.php
- в интерфейсе пользователя или в области администрирования (т.news.php
панели инструментов, т.news.php
/wp-admin/...
)? Не могли бы вы предоставить полный путь?example.com/...
и что потом?