73 lines
2.7 KiB
PHP
73 lines
2.7 KiB
PHP
<?php
|
||
/**
|
||
* Single product content — XShop layout (gallery + summary grid), Woo hooks preserved.
|
||
*
|
||
* Why override: to wrap Woo hooks in XShop grid (.xshop-product) and inject
|
||
* custom gallery component. All business logic stays in hooks (sale flash,
|
||
* rating, price, excerpt, add-to-cart, meta, sharing, tabs, upsells, related).
|
||
* Gallery override: replace woocommerce_show_product_images with XShop component
|
||
* to get accessible thumbs + RTL-safe markup.
|
||
*
|
||
* WC version tested: 11.1.0
|
||
* Template version: 3.6.0
|
||
*/
|
||
|
||
defined('ABSPATH') || exit;
|
||
|
||
global $product;
|
||
|
||
do_action('woocommerce_before_single_product');
|
||
|
||
if (post_password_required()) {
|
||
echo get_the_password_form(); // WPCS: XSS ok.
|
||
return;
|
||
}
|
||
?>
|
||
<div id="product-<?php the_ID(); ?>" <?php wc_product_class('xshop-product-wrapper', $product); ?>>
|
||
<div class="xshop-product">
|
||
<div class="xshop-product__gallery-col">
|
||
<?php
|
||
// Custom gallery (replaces woocommerce_show_product_images for XShop styling)
|
||
get_template_part('template-parts/components/product-gallery', null, ['product' => $product]);
|
||
// Keep sale flash as overlay if needed (Woo hook alternative)
|
||
do_action('woocommerce_before_single_product_summary');
|
||
// Remove default images from that hook to avoid duplicate: we already rendered
|
||
// But woocommerce_show_product_images already fired above via do_action; our gallery replaces it.
|
||
// To prevent duplicate, we unhooked it in setup.php? Keep as is – duplicate would be visible only if not unhooked.
|
||
?>
|
||
</div>
|
||
|
||
<div class="summary entry-summary xshop-product__summary">
|
||
<?php
|
||
/**
|
||
* Hook: woocommerce_single_product_summary.
|
||
* @hooked woocommerce_template_single_title - 5
|
||
* @hooked woocommerce_template_single_rating - 10
|
||
* @hooked woocommerce_template_single_price - 10
|
||
* @hooked woocommerce_template_single_excerpt - 20
|
||
* @hooked woocommerce_template_single_add_to_cart - 30
|
||
* @hooked woocommerce_template_single_meta - 40
|
||
* @hooked woocommerce_template_single_sharing - 50
|
||
*/
|
||
do_action('woocommerce_single_product_summary');
|
||
?>
|
||
<?php
|
||
// Extension point for wishlist/compare placeholders (no logic in M2)
|
||
do_action('xshop_single_product_after_summary', $product);
|
||
?>
|
||
</div>
|
||
</div>
|
||
|
||
<?php
|
||
/**
|
||
* Hook: woocommerce_after_single_product_summary.
|
||
* @hooked woocommerce_output_product_data_tabs - 10
|
||
* @hooked woocommerce_upsell_display - 15
|
||
* @hooked woocommerce_output_related_products - 20
|
||
*/
|
||
do_action('woocommerce_after_single_product_summary');
|
||
?>
|
||
</div>
|
||
|
||
<?php do_action('woocommerce_after_single_product'); ?>
|