У меня есть стандартная форма для написания комментариев из движка 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 “%1$s”', '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 “%2$s”', '%1$s thoughts on “%2$s”', $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><