Тема не нова, уже освещалась, например, в теме на форуме:
и в статье:
Именно по статье я и делал форму авторизации, вот код на comments.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">Для отправки комментария вам необходимо <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 );
Но в связи с установкой дополнения Comments Tuner, comment_form( $args ) пришлось заменить на comment_form(), и, соответственно $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. );
Авторизоваться, чтобы ответить на комментарий работает отлично, но Авторизоваться, чтобы добавить комментарий - адресует на /wp-login.php?
Подскажите, как исправить ситуацию?
Эта задача решалась в дополнении "Kill wp-login & Fix Login - отбиваем атаку на wp-login.php и исправляет вход на форму входа от плагина WP-Recall"
В принципе если вам не нужна защита wp-login.php - я могу из этого дополнения отделить часть, где вход от формы комментариев, в отдельный доп.
Чувствует сердце, что можно решить путём добавления кода в funcitons.php, как в случае с авторизацией для ОТВЕТА на комментарий:
function custom_comment_reply_link_change( $link ) { if ( get_option( 'comment_registration' ) && ! is_user_logged_in() ) $link = '<a rel="nofollow" class="rcl-login" href="#">Авторизуйтесь, что бы ответить</a>'; return $link; } add_filter( 'comment_reply_link', 'custom_comment_reply_link_change' );
но как это сделать, увы, не знаю. Не подскажите?