Задать вопрос
@lakalov

Как убрать редирект на страницу запись, после отправки формы и выводить комментарии на страницах, а не на записях?

У меня есть стандартная форма для написания комментариев из движка wordpress, файл comments.php. После написания отзыва, идет редирект на страницу записи и публикуются они на этой же старинце https://i.imgur.com/TgcPv2e.png .

Как убрать редирект на запись после отправки формы и выводить комментарии на нужных мне страницах, а не на записях?

Я поправил немного форму через functions.php
function remove_comment_fields($fields) {
    unset($fields['url']); // Удаляем URL
    unset($fields['email']); // Удаляем E-mail
    return $fields;
}
add_filter('comment_form_default_fields', 'remove_comment_fields');


function custom_validate_comment_author() {
if( empty( $_POST['author'] ) || ( !preg_match( '/[^\s]/', $_POST['author'] ) ) )     wp_die( __('Ошибка! Пожалуйста, заполните поле Имя') );
}
add_action( 'pre_comment_on_post', 'custom_validate_comment_author' );

function my_comments_form($default) {
     $default['comment_notes_before'] = '';
     return $default;
 }
 add_filter('comment_form_defaults','my_comments_form',999);



/* Чекбокс GDPR отключен по умолчанию */
function comment_form_not_checked_cookies_consent( $fields ) {
    $fields['cookies'] = '<p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes" />' .
                     '<label for="wp-comment-cookies-consent">' . __( 'Сохранить моё имя, email и адрес сайта в этом браузере для последующих моих комментариев.' ) . '</label></p>';
    return $fields;
}
add_filter( 'comment_form_default_fields', 'comment_form_not_checked_cookies_consent' );


/* Отключает чекбокс GDPR */
function comment_form_hide_cookies_consent( $fields ) {
    unset( $fields['cookies'] );
    return $fields;
}
add_filter( 'comment_form_default_fields', 'comment_form_hide_cookies_consent' );


Код самой формы

<div id="comments" class="comments-area">

    <?php
    // You can start editing here -- including this comment!
    if ( have_comments() ) :
        ?>
        <h2 class="comments-title">
            <?php
            $redhat_comment_count = get_comments_number();
            if ( '1' === $redhat_comment_count ) {
                printf(
                    /* translators: 1: title. */
                    esc_html__( 'One thought on &ldquo;%1$s&rdquo;', 'redhat' ),
                    '<span>' . wp_kses_post( get_the_title() ) . '</span>'
                );
            } else {
                printf(
                    /* translators: 1: comment count number, 2: title. */
                    esc_html( _nx( '%1$s thought on &ldquo;%2$s&rdquo;', '%1$s thoughts on &ldquo;%2$s&rdquo;', $redhat_comment_count, 'comments title', 'redhat' ) ),
                    number_format_i18n( $redhat_comment_count ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
                    '<span>' . wp_kses_post( get_the_title() ) . '</span>'
                );
            }
            ?>
        </h2><!-- .comments-title -->

        <?php the_comments_navigation(); ?>

        <ol class="comment-list">
            <?php
            wp_list_comments(
                array(
                    'style'      => 'ol',
                    'short_ping' => true,
                )
            );
            ?>
        </ol><!-- .comment-list -->

        <?php
        the_comments_navigation();

        // If comments are closed and there are comments, let's leave a little note, shall we?
        if ( ! comments_open() ) :
            ?>
            <p class="no-comments"><?php esc_html_e( 'Comments are closed.', 'redhat' ); ?></p>
            <?php
        endif;

    endif; // Check for have_comments().


    comment_form();
    ?>

</div><
  • Вопрос задан
  • 90 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы