Публикация в группе: Web-Blog - Блог о блоге на Wordpress!

Категории группы: Wordpress

Всем привет! Вот приспичило мне скрыть странички 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');

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

5

Автор публикации

не в сети 7 месяцев

Web-Blog

378
Комментарии: 264Публикации: 15Регистрация: 06-07-2014Продаж/Покупок: 0/0