diff --git a/src/BlockTemplatesController.php b/src/BlockTemplatesController.php index e94f6102668..1443e9ceafe 100644 --- a/src/BlockTemplatesController.php +++ b/src/BlockTemplatesController.php @@ -778,6 +778,29 @@ protected function has_migrated_page( $page_id ) { return (bool) get_option( 'has_migrated_' . $page_id, false ); } + /** + * Prepare default page template. + * + * @param \WP_Post $page Page object. + * @return string + */ + protected function get_default_migrate_page_template( $page ) { + $default_template_content = $this->get_block_template_part( 'header' ); + $default_template_content .= ' + +
+ +

' . wp_kses_post( $page->post_title ) . '

+ + ' . wp_kses_post( $page->post_content ) . ' +
+ + '; + $default_template_content .= $this->get_block_template_part( 'footer' ); + + return $default_template_content; + } + /** * Migrates a page to a template if needed. * @@ -790,20 +813,27 @@ protected function migrate_page( $page_id, $page ) { return; } + // 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 ) ) { + // Massage the original content into something we can use. Replace post content with a group block. + $pattern = '/()/'; + $replacement = ' + +
' . wp_kses_post( $page->post_content ) . '
+ + '; + $template_content = preg_replace( $pattern, $replacement, $existing_page_template->content ); + } else { + $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( [ 'id' => 'woocommerce/woocommerce//' . $page_id, - 'content' => $this->get_block_template_part( 'header' ) . - ' -
- -

' . wp_kses_post( $page->post_title ) . '

- - ' . wp_kses_post( $page->post_content ) . ' -
- ' . - $this->get_block_template_part( 'footer' ), + 'content' => $template_content, ] ); rest_get_server()->dispatch( $request ); @@ -818,7 +848,7 @@ protected function migrate_page( $page_id, $page ) { * @return string */ protected function get_block_template_part( $part ) { - $template_part = get_block_template( get_stylesheet() . '//' . $part, 'wp_template_part' ); + $template_part = BlockTemplateUtils::get_block_template( get_stylesheet() . '//' . $part, 'wp_template_part' ); if ( ! $template_part || empty( $template_part->content ) ) { return ''; }