Restore global $GLOBALS['post'] after render products shortcode
Closes #17769
This commit is contained in:
parent
36e7bb04a1
commit
b4347f4071
|
@ -508,6 +508,8 @@ class WC_Shortcode_Products {
|
||||||
update_meta_cache( 'post', $products_ids );
|
update_meta_cache( 'post', $products_ids );
|
||||||
update_object_term_cache( $products_ids, 'product' );
|
update_object_term_cache( $products_ids, 'product' );
|
||||||
|
|
||||||
|
$original_post = $GLOBALS['post'];
|
||||||
|
|
||||||
do_action( "woocommerce_shortcode_before_{$this->type}_loop", $this->attributes );
|
do_action( "woocommerce_shortcode_before_{$this->type}_loop", $this->attributes );
|
||||||
|
|
||||||
woocommerce_product_loop_start();
|
woocommerce_product_loop_start();
|
||||||
|
@ -527,15 +529,17 @@ class WC_Shortcode_Products {
|
||||||
remove_action( 'woocommerce_product_is_visible', array( $this, 'set_product_as_visible' ) );
|
remove_action( 'woocommerce_product_is_visible', array( $this, 'set_product_as_visible' ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$GLOBALS['post'] = $original_post; // WPCS: override ok.
|
||||||
woocommerce_product_loop_end();
|
woocommerce_product_loop_end();
|
||||||
|
|
||||||
do_action( "woocommerce_shortcode_after_{$this->type}_loop", $this->attributes );
|
do_action( "woocommerce_shortcode_after_{$this->type}_loop", $this->attributes );
|
||||||
|
|
||||||
|
wp_reset_postdata();
|
||||||
} else {
|
} else {
|
||||||
do_action( "woocommerce_shortcode_{$this->type}_loop_no_results", $this->attributes );
|
do_action( "woocommerce_shortcode_{$this->type}_loop_no_results", $this->attributes );
|
||||||
}
|
}
|
||||||
|
|
||||||
woocommerce_reset_loop();
|
woocommerce_reset_loop();
|
||||||
wp_reset_postdata();
|
|
||||||
|
|
||||||
return '<div class="' . esc_attr( implode( ' ', $classes ) ) . '">' . ob_get_clean() . '</div>';
|
return '<div class="' . esc_attr( implode( ' ', $classes ) ) . '">' . ob_get_clean() . '</div>';
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue