# ultimate-store-kit/3.1.0/includes/builder/templates/woocommerce/single-product.php

Ultimate Store Kit – Store Builder Addons for Elementor, WooCommerce Store Builder, EDD Store Builder, version 3.1.0. 51 lines.

- Page: https://pluginprobe.com/plugins/ultimate-store-kit/3.1.0/code/includes/builder/templates/woocommerce/single-product.php
- Raw: https://pluginprobe.com/plugins/ultimate-store-kit/3.1.0/raw/includes/builder/templates/woocommerce/single-product.php
- Modified: 2026-08-17T09:34:16+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/ultimate-store-kit/3.1.0/code/includes/builder/templates/woocommerce/single-product.php#L10-L20`.

```php
<?php

/**
 * The template for displaying product content in the single-product.php template
 *
 * This template can be overridden by copying it to yourtheme/woocommerce/content-single-product.php.
 *
 * HOWEVER, on occasion WooCommerce will need to update template files and you
 * (the theme developer) will need to copy the new files to your theme to
 * maintain compatibility. We try to do this as little as possible, but it does
 * happen. When this occurs the version of the template file will be bumped and
 * the readme will list any important changes.
 *
 * @see     https://docs.woocommerce.com/document/template-structure/
 * @package WooCommerce\Templates
 * @version 3.6.0
 */

use UltimateStoreKit\Builder\Builder_Integration;

defined('ABSPATH') || exit;

global $product;

get_header('shop');

/**
 * Hook: woocommerce_before_single_product.
 *
 * @hooked woocommerce_output_all_notices - 10
 */
do_action('woocommerce_before_single_product');

if (post_password_required()) {
    echo get_the_password_form(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- WordPress core returns the password form as markup.
    return;
}
?>
<div id="product-<?php the_ID(); ?>" <?php wc_product_class('', $product); ?>>
    <?php
    if (class_exists('Elementor\Plugin')) {
        echo Elementor\Plugin::instance()->frontend->get_builder_content(Builder_Integration::instance()->current_template_id, false); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Elementor renders and escapes the builder content itself.
    }
    ?>
</div>

<?php do_action('woocommerce_after_single_product');

get_footer('shop');

?>
```
