diff --git a/src/BlockTemplatesController.php b/src/BlockTemplatesController.php index 76e1d909508..cf7ac242cc0 100644 --- a/src/BlockTemplatesController.php +++ b/src/BlockTemplatesController.php @@ -798,7 +798,7 @@ protected function migrate_page( $page_id, $page ) { // Use the page template if it exists, which we'll use over our default template if found. $existing_page_template = BlockTemplateUtils::get_block_template( get_stylesheet() . '//page', 'wp_template' ); - if ( $existing_page_template && ! empty( $existing_page_template->content ) ) { + if ( $existing_page_template && ! empty( $existing_page_template->content ) && strstr( $existing_page_template->content, 'wp:post-content' ) ) { // Massage the original content into something we can use. Replace post content with a group block. $pattern = '/()/'; $replacement = ' @@ -811,15 +811,33 @@ protected function migrate_page( $page_id, $page ) { $template_content = $this->get_default_migrate_page_template( $page ); } - $request = new \WP_REST_Request( 'POST', '/wp/v2/templates/woocommerce/woocommerce//' . $page_id ); - $request->set_body_params( + $new_page_template = BlockTemplateUtils::get_block_template( 'woocommerce/woocommerce//' . $page_id, 'wp_template' ); + + // Check template validity--template must exist, and custom template must not be present already. + if ( ! $new_page_template || $new_page_template->wp_id ) { + update_option( 'has_migrated_' . $page_id, '1' ); + return; + } + + $new_page_template_id = wp_insert_post( [ - 'id' => 'woocommerce/woocommerce//' . $page_id, - 'content' => $template_content, - ] + 'post_name' => $new_page_template->slug, + 'post_type' => 'wp_template', + 'post_status' => 'publish', + 'tax_input' => array( + 'wp_theme' => $new_page_template->theme, + ), + 'meta_input' => array( + 'origin' => $new_page_template->source, + ), + 'post_content' => $template_content, + ], + true ); - rest_get_server()->dispatch( $request ); - update_option( 'has_migrated_' . $page_id, '1' ); + + if ( ! is_wp_error( $new_page_template_id ) ) { + update_option( 'has_migrated_' . $page_id, '1' ); + } } /** diff --git a/src/Templates/CartTemplate.php b/src/Templates/CartTemplate.php index af804d10113..ed126951543 100644 --- a/src/Templates/CartTemplate.php +++ b/src/Templates/CartTemplate.php @@ -33,7 +33,8 @@ public static function get_placeholder_page() { */ protected function is_active_template() { global $post; - return $post instanceof \WP_Post && get_option( 'woocommerce_cart_page_endpoint' ) === $post->post_name; + $placeholder = $this->get_placeholder_page(); + return null !== $placeholder && $post instanceof \WP_Post && $placeholder->post_name === $post->post_name; } /** diff --git a/src/Templates/CheckoutTemplate.php b/src/Templates/CheckoutTemplate.php index c69df17f9c4..000c6edbe18 100644 --- a/src/Templates/CheckoutTemplate.php +++ b/src/Templates/CheckoutTemplate.php @@ -42,6 +42,7 @@ public static function get_template_title() { */ public function is_active_template() { global $post; - return $post instanceof \WP_Post && get_option( 'woocommerce_checkout_page_endpoint' ) === $post->post_name; + $placeholder = $this->get_placeholder_page(); + return null !== $placeholder && $post instanceof \WP_Post && $placeholder->post_name === $post->post_name; } }