Skip to content
This repository has been archived by the owner on Feb 23, 2024. It is now read-only.

Commit

Permalink
Update check for active cart template and migration routine (#10462)
Browse files Browse the repository at this point in the history
* Update cart/checkout endpoints

* Remove updating option on every page load

* Check placeholder page vs current page

* Check placeholder page vs current page

* Switch from Rest to PHP for migrating templates

* Existing page used for migration must contain post-content to be suitable

---------

Co-authored-by: Mike Jolley <mike.jolley@me.com>
  • Loading branch information
2 people authored and gigitux committed Aug 4, 2023
1 parent 1ef79d4 commit 7aa844c
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 10 deletions.
34 changes: 26 additions & 8 deletions src/BlockTemplatesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -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 = '/(<!--\s*)wp:post-content(.*?)(\/-->)/';
$replacement = '
Expand All @@ -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' );
}
}

/**
Expand Down
3 changes: 2 additions & 1 deletion src/Templates/CartTemplate.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

/**
Expand Down
3 changes: 2 additions & 1 deletion src/Templates/CheckoutTemplate.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}

0 comments on commit 7aa844c

Please sign in to comment.