Всем привет! Вот приспичило мне скрыть странички 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');
теперь при желании пользователя посетить данные страницы, будет высвечиваться сообщение, что данной страницы нет! Не уверен, правильно ли я сделал, но результат свой дает!
Возникает другая проблема, если у вас отключены комментарии, то для неавторизованных пользователей появляется ссылка с предложением авторизоваться:
и естественно если мы на нее нажимаем, то у нас появится сообщение о том, что данной страницы нет.
Есть вариант, изменить немного ранее добавленный код на следующий:
/*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. Окно мы получили с помощью данной вставки
/?action-rcl=login
, подробнее можете почитать ТУТ в разделе "Шорткоды для формы регистрации и входа".
Естественно, при наведении мышки на ссылку авторизации, внизу браузера высветится то, что вы должны перейти на страницу wp-login, но я не думаю, что на это особо обращают внимание!
Есть несколько вопросов, на которые я не знаю ответа и надеюсь, что знающие смогут ответить на них в комментариях:
Возможно ли скрыть отображаемую ссылку на страницу wp-login, при наведении на ссылку "авторизоваться"?
Как сделать, что бы не совершался редирект на главную при клике на ссылку "авторизоваться" ("get_permalink" не работает)?
Или как сделать, что бы при нажатии на ссылку "авторизоваться" открывалось окно авторизации Wp-Recall?
На этом все, всем спасибо за внимание и удачи в продвижении ваших проектов!
добавлено 10.11.15.
Благодаря совету пользователя"Otshelnik-Fm" и почитав вот эту ветку форума: /forum/faqs/vsplyvayushhaya-forma/ , нашел ответы на поставленные выше вопросы!
У меня на самом деле выводились комментарии по стандартному шаблону WordPress с помощью функции
<?php comment_form(); ?>
Нам необходимо в файле comments.php, вашей темы, удалить функцию вывода данного шаблона и написать/вставить вместо него код этого самого шаблона
<?php $args = array( 'fields' => apply_filters( 'comment_form_default_fields', $fields ), 'comment_field' => '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>', 'must_log_in' => '<p class="must-log-in">' . sprintf( __( 'You must be <a href="%s">logged in</a> to post a comment.' ), wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>', 'logged_in_as' => '<p class="logged-in-as">' . sprintf( __( 'Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out?</a>' ), admin_url( 'profile.php' ), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>', 'comment_notes_before' => '<p class="comment-notes">' . __( 'Your email address will not be published.' ) . ( $req ? $required_text : '' ) . '</p>', 'comment_notes_after' => '<p class="form-allowed-tags">' . sprintf( __( 'You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: %s' ), ' <code>' . allowed_tags() . '</code>' ) . '</p>', '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' => '<input name="%1$s" type="submit" id="%2$s" class="%3$s" value="%4$s" />', // формат кнопки submit. C 4.2. 'submit_field' => '<p class="form-submit">%1$s %2$s</a>', // формат кнопки submit %1$s - кнопка %2$s - скрытые поля. C 4.2. ); comment_form( $args ); ?>
далее правим в нем аргумент
'must_log_in'
я сделал так
<?php global $rcl_user_URL; $loginoutlink = wp_logout_url( get_permalink() ); $args = array( 'fields' => apply_filters( 'comment_form_default_fields', $fields ), 'comment_field' => '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>', 'must_log_in' => '<p class="must-log-in">Для отправки комментария вам необходимо <a href="#" class="rcl-login">авторизоваться</a> или <a href="#" class="rcl-register">зарегистрироваться</a> на сайте.</p>', 'logged_in_as' => '<p class="logged-in-as">Вы авторизованы на сайте как <a href="'.$rcl_user_URL.'">'.get_user_meta( get_current_user_id() ,nickname, true).'</a>, хотите <a href="'.$loginoutlink.'">выйти</a> с сайта?</p>', 'comment_notes_before' => '<p class="comment-notes">' . __( 'Your email address will not be published.' ) . ( $req ? $required_text : '' ) . '</p>', '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' => '<input name="%1$s" type="submit" id="%2$s" class="%3$s" value="%4$s" />', // формат кнопки submit. C 4.2. 'submit_field' => '<p class="form-submit">%1$s %2$s</a>', // формат кнопки 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-Recall при нажатии по ссылке! ❓
Так это просто: копируй ссылку, которая есть в виджете (на авторизацию) и в файле commenrs.php обычно гдето внизу просто заменить ссылки на нужные и все готово;)
Если бы все так было просто, я бы так и сделал! 💡 В моей теме нет такой возможности, править файлы ВП не хочу, что бы при обнове ни чего не слетало...
Так по лгоике то комменты сам вордпресс не строит. Только через шаблон.
Наверное комментарии выводятся через comment_form функцию? Переопределите ее аргументы http://codeseller.ru/forum/faqs/vsplyvayushhaya-forma/ Смотрите 10-й комментарий
Я вот как раз не понимал как мне их переписать, глянул по вашему совету форум и сразу все сделал!
У меня на самом деле комментарии работали по стандартному шаблону comment_form();.
Переписал аргументы, сделал так: http://pastebin.com/Ev9818Rq , все работает как и хотел!
Спасибо за совет!
Есть вот такой вот способ. Не знаю как он работает с отключёнными комментами. Попробуйте. Вообщем вот, может пригодится.
В файл .htaccess
# BEGIN Hide console URL
RewriteEngine On
RewriteRule ^custom_admin_url/?$ /wp-login.php?Ваша секретная ссылка [R,L]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^custom_admin_url/?$ /wp-login.php?Ваша секретная ссылка&redirect_to=/wp-admin/ [R,L]
RewriteRule ^custom_admin_url/?$ /wp-admin/?Ваша секретная ссылка [R,L]
RewriteCond %{SCRIPT_FILENAME} !^(.*)admin-ajax\.php
RewriteCond %{HTTP_REFERER} !^(.*)yoursite.com/wp-admin
RewriteCond %{HTTP_REFERER} !^(.*)yoursite.com/wp-login\.php
RewriteCond %{HTTP_REFERER} !^(.*)yoursite.com/custom_admin_url
RewriteCond %{QUERY_STRING} !^Ваша секретная ссылка
RewriteCond %{QUERY_STRING} !^action=logout
RewriteCond %{QUERY_STRING} !^action=rp
RewriteCond %{QUERY_STRING} !^action=postpass
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^.*wp-admin/?|^.*wp-login\.php /not_found [R,L]
RewriteCond %{QUERY_STRING} ^loggedout=true
RewriteRule ^.*$ /wp-login.php?Ваша секретная ссылка [R,L]
# END Hide console URL
custom_admin_url– новый URL админки
Ваша секретная ссылка- Это Ваша секретная ссылка) пример: etoneadminka
Значит доступ к консоли будет такой yoursite.com/etoneadminka/
а не пробовали тут смотреть wp-includes/comment-template.php строка 2226: You must be logged in to post a comment.
Думаю убрать ссылку и избавится от ссылки регистрации, оставить только запись.
Дело в том, что при обновлении WordPress, все будет возвращаться обратно!
Дописал статью, все сделал как посоветовал "Otshelnik-Fm" и получил желаемый результат!
Но есть ещё: "Войдите, чтобы ответить". Как с ним быть, используя 2 часть статьи?
Если мне не изменяет память, то 8-я строка как раз за это и отвечает!
Не, этот код решает вопрос в части добавления комментариев, а что касаемо "Войдите, чтобы ответить" на уже имеющийся комментарий ни как не влияет.
Точно! Я в файле functions.php, прописал следующее: http://pastebin.com/Km4jqbtp
Это позволяет заменить ссылку на страницу логина и регистрации, в моем случае вызывается всплывающее окно WP-Recall! 😉
Братцы, сделайте добро - подскажите! Мне необходимо докопаться до общего правила, чтобы произвольной ссылкой на произвольной странице вывести реколловскую форму для реги
На главной странице ваш ответ
А как быть, если установлено дополнение Comments Tuner? Там функция comment_form($args) заменяется на comment_form(), соответственно $args не может быть = array( ....... ?
Я думаю этот вопрос нужно задать на форуме к данному дополнению!
Здравствуйте! Нет решения с Comments Tuner? С ним последний код выводит поломанную форму комментариев.
По сути дела вы очень много гемороя себе создаете, самым простым решением и как по мне правильным будет добавление кода в functions.php
Ну тут скрытие логина и редирект регистрации
Спасибо за Ваш комментарий, думаю читателям будет полезно!