Как делать редирект после успещного записи комментария в базу с кастомного шаблона?
Есть отдельная страница комментариев, за что отдельное спасибо, по вот этому варианту
Код выглядит так.
<?php /** * Plugin Name: Comments Single Page * Description: Creates single page for post comments. * Version: 1.0 * Author: Kama */ $Kama_Separate_Comments_Page = new Separate_Comments_Page; $Kama_Separate_Comments_Page->init(); class Separate_Comments_Page { static $page_title_patt = "Comments for %s"; function init(){ add_filter( 'query_vars', [ $this, 'query_vars' ] ); add_action( 'init', [ $this, 'add_endpoint' ] ); add_action( 'single_template', [ $this, 'template_redirect' ] ); add_filter( 'get_comment_link', [ $this, 'get_comment_link' ] ); add_filter( 'wp_title', [ $this, 'wp_title' ], 10, 1 ); register_activation_hook( __FILE__, [ $this, 'activate'] ); register_deactivation_hook( __FILE__, [ $this, 'deactivate'] ); } function query_vars( $vars ){ $vars[] = 'comments'; return $vars; } # Add a /comments/ page to all post permalinks function add_endpoint(){ add_rewrite_endpoint( 'comments', EP_PERMALINK ); } # Template file for the /comments/ permalink function template_redirect( $templates = '' ){ global $wp_query; if( ! isset( $wp_query->query['comments'] ) ) return $templates; $templates = locate_template( 'comments-page.php', false ); if( ! $templates ){ $templates = __DIR__ . '/comments-page.php'; } return $templates; } # Fix comment permalinks function get_comment_link( $url ){ //$urlparts = explode( '#', $url ); // if('reviews' == get_post_type()){ // return get_home_url(). '/confirm/'; // } return $url; } # Fix the page title function wp_title( $title ){ global $wp_query; if( isset( $wp_query->query['comments'] ) ) $title = sprintf( self::$page_title_patt, $title ); return $title; } function activate(){ $this->add_endpoint(); flush_rewrite_rules(); } function deactivate(){ flush_rewrite_rules(); } }
Моя задача в том, что б редиректить пользователей только с этой страницы на страницу get_home_url(). '/confirm/' Если поля формы заполнены правильно и прошли валидацию.
Мой прошлый вариант заменить
function get_comment_link( $url ){ return get_home_url(). '/confirm/'; }
Оказался очень радикальным, и теперь все формы оставления комментариев (а их на сайте много) после отправки редиректят на '/confirm/'. Как это исправить?
Я пробовал, поскольку тут надо только для кастомной формы, подвязаться на хук в 'function.php'
function custom_comment_inserted($comment_id, $comment_object) { $comment_post_id = $comment_object->comment_post_ID; $post = get_post($comment_post_id); if ($post->post_type === 'reviews') { wp_redirect('/confirm/'); } } add_action('wp_insert_comment', 'custom_comment_inserted', 99, 2);
Он редиректит, но доп.поля кастомной формы не успивают записаться в базу данных несмотря на низкий преоритет выполнения. Подскажите, как решить проблему, пожалуйста?