Server IP : 192.64.112.168 / Your IP : 3.144.99.39 Web Server : Apache System : Linux nc-ph-2300-85.bluforrest.com 4.18.0-513.9.1.el8_9.x86_64 #1 SMP Sat Dec 2 05:23:44 EST 2023 x86_64 User : expressoneac ( 1128) PHP Version : 8.0.30 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/expressoneac/www/wp-content/themes/woodmart/inc/modules/layouts/ |
Upload File : |
<?php namespace XTS\Modules\Layouts; use WC_Product_Factory; use WP_Query; class Single_Product extends Layout_Type { /** * Check. * * @param array $condition Condition. * @param string $type Layout type. */ public function check( $condition, $type = '' ) { $is_active = false; switch ( $condition['condition_type'] ) { case 'all': $is_active = is_singular( 'product' ); break; case 'product': $is_active = (int) woodmart_get_the_ID() === (int) $condition['condition_query']; break; case 'product_type': $is_active = WC_Product_Factory::get_product_type( woodmart_get_the_ID() ) === $condition['condition_query']; break; case 'product_cat': case 'product_tag': case 'product_attr_term': $terms = wp_get_post_terms( woodmart_get_the_ID(), get_taxonomies(), array( 'fields' => 'ids' ) ); if ( $terms ) { $is_active = in_array( (int) $condition['condition_query'], $terms, true ); } break; case 'product_cat_children': $terms = wp_get_post_terms( woodmart_get_the_ID(), get_taxonomies(), array( 'fields' => 'ids' ) ); $term_children = get_term_children( $condition['condition_query'], 'product_cat' ); if ( $terms ) { $is_active = count( array_diff( $terms, $term_children ) ) !== count( $terms ); } break; } return $is_active; } /** * Override template. * * @param string $template Template. * * @return bool|string */ public function override_template( $template ) { if ( woodmart_woocommerce_installed() && is_singular( 'product' ) && Main::get_instance()->has_custom_layout( 'single_product' ) ) { $this->display_template(); return false; } return $template; } /** * Display custom template. */ private function display_template() { $this->before_template_content(); woodmart_enqueue_inline_style( 'woo-single-prod-builder' ); ?> <?php while ( have_posts() ) : ?> <?php the_post(); ?> <div id="product-<?php the_ID(); ?>" <?php wc_product_class( 'single-product-page' ); ?>> <?php $this->template_content( 'single_product' ); // phpcs:ignore ?> <?php if ( function_exists( 'WC' ) && is_object( WC()->structured_data ) ) : ?> <?php WC()->structured_data->generate_product_data(); ?> <?php endif; ?> </div> <?php endwhile; ?> <?php $this->after_template_content(); } /** * Get preview product id. * * @return int */ public static function get_preview_product_id() { $product_id = woodmart_get_opt( 'single_product_builder_post_data' ); if ( ! $product_id ) { $random_product = new WP_Query( array( 'posts_per_page' => '1', 'post_type' => 'product', ) ); while ( $random_product->have_posts() ) { $random_product->the_post(); $product_id = get_the_ID(); } wp_reset_postdata(); } return $product_id; } /** * Setup post data. */ public static function setup_postdata( $force_product_id = false ) { global $post, $product; if ( ( Main::is_layout_type( 'single_product') && empty( $product ) ) || is_singular( 'woodmart_layout' ) || wp_doing_ajax() || ( isset( $_POST['action'] ) && 'editpost' === $_POST['action'] ) || $force_product_id ) { // phpcs:ignore $product_id = $force_product_id ? $force_product_id : self::get_preview_product_id(); $post = get_post( $product_id ); // phpcs:ignore setup_postdata( $post ); } } /** * Reset post data. */ public static function reset_postdata( $force_product_id = false ) { if ( is_singular( 'woodmart_layout' ) || wp_doing_ajax() || $force_product_id ) { wp_reset_postdata(); } } /** * Template content. * * @param string $type Template type. */ public function template_content( $type ) { remove_filter( 'the_content', 'convert_smilies', 20 ); parent::template_content( $type ); add_filter( 'the_content', 'convert_smilies', 20 ); } } Single_Product::get_instance();