Я создаю настраиваемую тему WordPress на основе существующего сайта.
Я хочу использовать альтернативную панель, которую я создал.
Как я могу направить пользователя на « news.php
» после входа в систему вместо « /wp-admin/
»?
–
EDIT: у вас есть рабочий плагин для этого, но щедрость по-прежнему доступна для всех, кто может найти ручной способ сделать это через functions.php, поскольку он будет более безопасным, а затем использовать сторонний плагин.
Это должно решить вашу проблему. Адаптировано из ответа, найденного здесь.
function admin_default_page() { return '/new-dashboard-url'; } add_filter('login_redirect', 'admin_default_page');
Принятый ответ очень ошибочен. Никогда не следует изменять WordPress Core. Некоторые изменения, которые вы производите по своей прихоти, могут быть утрачены при заданном обновлении, могут скомпрометировать другие функции или даже поставить под угрозу безопасность вашего сайта.
Action Hooks & Filters включены в ядро, что позволяет изменять функциональность без изменения кода.
Пример использования фильтра login_redirect
для перенаправления определенных пользователей можно найти здесь и является гораздо более надежным решением вашей проблемы.
Для вашей конкретной проблемы вы хотите сделать это:
function login_redirect( $redirect_to, $request, $user ){ return home_url('news.php'); } add_filter( 'login_redirect', 'login_redirect', 10, 3 );
Это может помочь. Вход в систему
Перенесите пользователей в разные местоположения после входа в систему и выхода из системы.
Определите набор правил переадресации для определенных пользователей, пользователей с определенными ролями, пользователей с определенными возможностями и правила для всех остальных пользователей. Кроме того, установите 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 } }
Плагин Theme My Login может помочь – он позволяет перенаправлять пользователей определенных ролей на определенные страницы.
Если у вас есть php 5.3+, вы можете использовать анонимную функцию:
add_filter( 'login_redirect', function() { return site_url('news'); } );
Принятый ответ явно не является хорошим ответом! Он может решить вашу проблему некоторое время, но что произойдет в следующий раз, когда вы обновите установку WordPress? Ваши основные файлы могут быть переопределены, и вы потеряете все свои модификации.
Как уже было сказано другими (ответы Дэна и Трэвиса), правильный ответ заключается в использовании фильтра login_redirect
.
Попробуйте это, он работает для любого перенаправления на 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; }
Файл 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-адреса перенаправления и ссылки туда, куда вы хотите перенаправить после входа в систему, у вас есть собственный собственный профиль.
// Used theme's 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 } }
Чтобы глобально перенаправить после успешного входа в систему, найдите этот код в 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); ?>
<?php echo esc_attr($redirect_to); ?>
с вашим URL-адресом, в который вы хотите перенаправить. URL-адрес должен начинаться с http: // и заканчиваться на / другой мудрой странице, перенаправляемой по умолчанию.
Сделайте то же самое, что и редирект формы после регистрации в том же файле, но в разделе <form name="registerform">
.