Wp admin redirect to wp login php

Редирект после авторизации в wordpress

Задача практически типовая, потому что рано или поздно может понадобиться её решить. Специфика wordpress в довольно слабой документированности частных вопросов, что иногда отбивает охоту что то на нем делать.

После авторизации со страницы /wp-login.php мы оказываемся в админке (/wp-admin). Как можно исправить данную ситуацию и попасть в какое то более полезное место на сайте? Вот несколько разных подходов.

Задание параметра GET — redirect_to
Если заглянуть в код /wp-login.php, то мы увидим, что программа проверяет наличие такого параметра как redirect_to, который указывает куда следует перейти после авторизации. Поэтому для авторизации пользователя мы можем составить специальный url на страницу авторизации, вроде такого:

Тогда пользователи будут попадать после авторизации туда, куда нам нужно. Этот вариант не будет работать, если мы используем для авторизации какой либо запрограммированный блок с полями логин и пароль.

Исправим переменную редиректа в коде страницы wp_login.php
Это некая полумера для любителей править код движка сайта. Мы можем явно задать переменную $redirect_to в коде, в том месте где идет вызов фильтров $redirect_to = apply_filters(‘login_redirect’, $redirect_to, … Ясно, что после обновления движка ваши исправления канут в лету, поэтому, если вы собираетесь поддерживать сайт в обновленном состоянии, это не ваш вариант.

Пишем фильтр
Типично, что любой сайт часто содержит какой то специфический модуль (user plugin), в котором разработчик собирает уникальные дополнения и исправления к движку. Вот именно в такой модуль можно добавить код небольшого фильтра, выполняющего редирект после авторизации пользователя на нужную страницу. Собственно сам код.

Источник

Скрываем wp-admin, wp-login и делаем редирект ссылки

Всем привет! Вот приспичило мне скрыть странички wp-admin и wp-login, но есть одна проблемка, о ней и поговорим!

Для тех кто не знает и желает так же скрыть wp-admin и wp-login, выложу код, который необходимо будет добавить в конце файла functions.php:

/*wp-admin, ошибка 404*/ add_action( 'init', 'blockusers_init' ); function blockusers_init() < if ( is_admin() && ! current_user_can( 'administrator' ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) < wp_redirect( '404' ); exit; >> /*wp-login.php, ошибка 404*/ function redirect_login_page() < $page_viewed = basename($_SERVER['REQUEST_URI']); if( $page_viewed == "wp-login.php?pass=1" ) < wp_redirect( '404' ); exit; >> add_action('init','redirect_login_page');

теперь при желании пользователя посетить данные страницы, будет высвечиваться сообщение, что данной страницы нет! Не уверен, правильно ли я сделал, но результат свой дает!

Возникает другая проблема, если у вас отключены комментарии, то для неавторизованных пользователей появляется ссылка с предложением авторизоваться:

и естественно если мы на нее нажимаем, то у нас появится сообщение о том, что данной страницы нет.

Читайте также:  Soap response to array php

Есть вариант, изменить немного ранее добавленный код на следующий:

/*wp-admin, ошибка 404*/ add_action( 'init', 'blockusers_init' ); function blockusers_init() < if ( is_admin() && ! current_user_can( 'administrator' ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) < wp_redirect( '404' ); exit; >> /*редирект с wp-login.php, на главную с окном авторизации*/ function redirect_login_page() < $page_viewed = basename($_SERVER['REQUEST_URI']); if( $page_viewed == "wp-login.php?pass=1" ) < wp_redirect( home_url('/?action-rcl=login') ); exit; >> add_action('init','redirect_login_page');

в данном случае у нас нет страницы wp-admin и есть редирект с wp-login на главную с открывающимся окном авторизации нашего плагина Wp-Recall. Окно мы получили с помощью данной вставки

, подробнее можете почитать ТУТ в разделе «Шорткоды для формы регистрации и входа».
Естественно, при наведении мышки на ссылку авторизации, внизу браузера высветится то, что вы должны перейти на страницу wp-login, но я не думаю, что на это особо обращают внимание!

Есть несколько вопросов, на которые я не знаю ответа и надеюсь, что знающие смогут ответить на них в комментариях:

Возможно ли скрыть отображаемую ссылку на страницу wp-login, при наведении на ссылку «авторизоваться»?

Как сделать, что бы не совершался редирект на главную при клике на ссылку «авторизоваться» («get_permalink» не работает)?

Или как сделать, что бы при нажатии на ссылку «авторизоваться» открывалось окно авторизации Wp-Recall?

На этом все, всем спасибо за внимание и удачи в продвижении ваших проектов!

добавлено 10.11.15.

Благодаря совету пользователя»Otshelnik-Fm» и почитав вот эту ветку форума: /forum/faqs/vsplyvayushhaya-forma/ , нашел ответы на поставленные выше вопросы!

У меня на самом деле выводились комментарии по стандартному шаблону WordPress с помощью функции

Нам необходимо в файле comments.php, вашей темы, удалить функцию вывода данного шаблона и написать/вставить вместо него код этого самого шаблона

 apply_filters( 'comment_form_default_fields', $fields ), 'comment_field' => '

', 'must_log_in' => '

' . sprintf( __( 'You must be logged in to post a comment.' ), wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '

', 'logged_in_as' => '

' . sprintf( __( 'Logged in as %2$s. Log out?' ), admin_url( 'profile.php' ), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '

', 'comment_notes_before' => '

' . __( 'Your email address will not be published.' ) . ( $req ? $required_text : '' ) . '

', 'comment_notes_after' => '

' . sprintf( __( 'You may use these HTML tags and attributes: %s' ), ' ' . allowed_tags() . '' ) . '

', 'id_form' => 'commentform', 'id_submit' => 'submit', 'title_reply' => __( 'Leave a Reply' ), 'title_reply_to' => __( 'Leave a Reply to %s' ), 'cancel_reply_link' => __( 'Cancel reply' ), 'label_submit' => __( 'Post Comment' ), 'class_submit' => 'submit', // Строка. С 4.1. class атрибут для submit элемента. 'submit_button' => '', // формат кнопки submit. C 4.2. 'submit_field' => '

%1$s %2$s', // формат кнопки submit %1$s - кнопка %2$s - скрытые поля. C 4.2. ); comment_form( $args ); ?>

далее правим в нем аргумент

 apply_filters( 'comment_form_default_fields', $fields ), 'comment_field' => '

', 'must_log_in' => '

Для отправки комментария вам необходимо авторизоваться или зарегистрироваться на сайте.

', 'logged_in_as' => '

Вы авторизованы на сайте как '.get_user_meta( get_current_user_id() ,nickname, true).', хотите выйти с сайта?

', 'comment_notes_before' => '

' . __( 'Your email address will not be published.' ) . ( $req ? $required_text : '' ) . '

', 'id_form' => 'commentform', 'id_submit' => 'submit', 'title_reply' => __( 'Leave a Reply' ), 'title_reply_to' => __( 'Leave a Reply to %s' ), 'cancel_reply_link' => __( 'Cancel reply' ), 'label_submit' => __( 'Post Comment' ), 'class_submit' => 'submit', // Строка. С 4.1. class атрибут для submit элемента. 'submit_button' => '', // формат кнопки submit. C 4.2. 'submit_field' => '

%1$s %2$s', // формат кнопки submit %1$s - кнопка %2$s - скрытые поля. C 4.2. ); comment_form( $args ); ?>

как данный код выглядит в работе, опять же можете посмотреть на моем сайте http://web-blog.su/.

И не забудьте поправить свой functions.php, а именно скрыть wp-login

/*wp-login.php, ошибка 404*/ function redirect_login_page() < $page_viewed = basename($_SERVER['REQUEST_URI']); if( $page_viewed == "wp-login.php?pass=1" ) < wp_redirect( '404' ); exit; >> add_action('init','redirect_login_page');

На этом все! Еще раз спасибо отшельнику и всем удачи и терпения!

Источник

Редирект с wp-login.php и wp-admin.php.

После того как я установил и настроил вордпресс, конечно позаботился и о защите. В статье — защита вордпресс, я постарался подробно описать все шаги. Если Вы хотите обезопасится, то стоит конечно почитать её и не только прочитать, а и воспользоватся советами.

Да, там есть код который позволяет сделать редирект с wp-admin, отлично, правда существует еще одна страница wp-login.php, через которую происходит вход. Так вот, установив редирект с wp-admin.php на главную и изменил имя wp-login.php на своё очень было спокойно, пока в Яндекс.Вебмастер не увидел — редирект с wp login на страницу входа которую я переименовал.

Печалька. Давай по новой бороздить Интернет и искать решение проблемы.

Делаем редирект с wp-login.php и wp-admin.php

Ищем functions.php активной темы и после «» тегом вставляем:

// редирект с wp-login.php define('ADMIN_URL', '111.php'); add_action('init', 'redirect_login_page'); add_filter('login_url', 'new_wp_login_url', 10, 3); add_filter('logout_url', 'new_wp_logout_url', 10, 2); add_filter('lostpassword_url', 'new_wp_lostpassword_url', 10, 2); function redirect_login_page() < $page_viewed = $_SERVER['REQUEST_URI']; if (strpos($page_viewed, "wp-login.php") !== false || (is_admin() && !(current_user_can('administrator') || current_user_can('super admin')) && !(defined('DOING_AJAX') && DOING_AJAX)) ) < global $wp_query; $wp_query->set_404(); status_header(404); get_template_part('404'); exit; > > function new_wp_login_url($redirect = '', $force_reauth = false) < $login_url = site_url(ADMIN_URL, 'login'); if (!empty($redirect)) $login_url = add_query_arg('redirect_to', urlencode($redirect), $login_url); if ($force_reauth) $login_url = add_query_arg('reauth', '1', $login_url); return $login_url; >function new_wp_logout_url() < $args = array( 'action' =>'logout' ); $logout_url = add_query_arg($args, site_url(ADMIN_URL, 'login')); $logout_url = wp_nonce_url( $logout_url, 'log-out' ); return $logout_url; > function new_wp_lostpassword_url() < $args = array( 'action' =>'lostpassword' ); $lostpassword_url = add_query_arg( $args, network_site_url(ADMIN_URL, 'login') ); return $lostpassword_url; > // конец редиректа wp-login.php

в строчке — define(‘ADMIN_URL’, ‘111.php’), страницу 111.php замените на страницу входа в админку, это нужно для того чтоб после нажатия на кнопку выхода Вас перебрасывало на страницу входа.

Теперь при наборе http://Ваш сайт/wp-login.php или http://Ваш сайт/wp-admin.php будет сообщение — Страница не найдена.

Поздравляю — еще один шаг вперёд в безопастность.

Надеюсь материал был достоен внимания.

До новых встреч на моем блоге.

Источник

Редирект с wp-login.php и wp-admin.php.

После того как я установил и настроил вордпресс, конечно позаботился и о защите. В статье — защита вордпресс, я постарался подробно описать все шаги. Если Вы хотите обезопасится, то стоит конечно почитать её и не только прочитать, а и воспользоватся советами.

Да, там есть код который позволяет сделать редирект с wp-admin, отлично, правда существует еще одна страница wp-login.php, через которую происходит вход. Так вот, установив редирект с wp-admin.php на главную и изменил имя wp-login.php на своё очень было спокойно, пока в Яндекс.Вебмастер не увидел — редирект с wp login на страницу входа которую я переименовал.

Печалька. Давай по новой бороздить Интернет и искать решение проблемы.

Делаем редирект с wp-login.php и wp-admin.php

Ищем functions.php активной темы и после «» тегом вставляем:

// редирект с wp-login.php define('ADMIN_URL', '111.php'); add_action('init', 'redirect_login_page'); add_filter('login_url', 'new_wp_login_url', 10, 3); add_filter('logout_url', 'new_wp_logout_url', 10, 2); add_filter('lostpassword_url', 'new_wp_lostpassword_url', 10, 2); function redirect_login_page() < $page_viewed = $_SERVER['REQUEST_URI']; if (strpos($page_viewed, "wp-login.php") !== false || (is_admin() && !(current_user_can('administrator') || current_user_can('super admin')) && !(defined('DOING_AJAX') && DOING_AJAX)) ) < global $wp_query; $wp_query->set_404(); status_header(404); get_template_part('404'); exit; > > function new_wp_login_url($redirect = '', $force_reauth = false) < $login_url = site_url(ADMIN_URL, 'login'); if (!empty($redirect)) $login_url = add_query_arg('redirect_to', urlencode($redirect), $login_url); if ($force_reauth) $login_url = add_query_arg('reauth', '1', $login_url); return $login_url; >function new_wp_logout_url() < $args = array( 'action' =>'logout' ); $logout_url = add_query_arg($args, site_url(ADMIN_URL, 'login')); $logout_url = wp_nonce_url( $logout_url, 'log-out' ); return $logout_url; > function new_wp_lostpassword_url() < $args = array( 'action' =>'lostpassword' ); $lostpassword_url = add_query_arg( $args, network_site_url(ADMIN_URL, 'login') ); return $lostpassword_url; > // конец редиректа wp-login.php

в строчке — define(‘ADMIN_URL’, ‘111.php’), страницу 111.php замените на страницу входа в админку, это нужно для того чтоб после нажатия на кнопку выхода Вас перебрасывало на страницу входа.

Теперь при наборе http://Ваш сайт/wp-login.php или http://Ваш сайт/wp-admin.php будет сообщение — Страница не найдена.

Поздравляю — еще один шаг вперёд в безопастность.

Надеюсь материал был достоен внимания.

До новых встреч на моем блоге.

Источник

Оцените статью