Server IP : 192.64.112.168 / Your IP : 3.17.78.184 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_Query; use WP_Query; class Shop_Archive extends Layout_Type { /** * Switched data. * * @var array Switched data. */ private static $switched_data = array(); /** * 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_shop() || is_product_category() || is_product_tag() || woodmart_is_product_attribute_archive(); break; case 'shop_page': $is_active = is_shop(); break; case 'product_search': $is_active = is_search() && 'product' === get_query_var( 'post_type' ); break; case 'product_term': $object = get_queried_object(); $taxonomy_id = is_object( $object ) && property_exists( $object, 'term_id' ) ? $object->term_id : false; $is_active = (int) $taxonomy_id === (int) $condition['condition_query'] && ! is_search(); break; case 'product_cat_children': $object = get_queried_object(); $taxonomy_id = is_object( $object ) && property_exists( $object, 'term_id' ) ? $object->term_id : false; $term_children = get_term_children( $condition['condition_query'], 'product_cat' ); $is_active = in_array( $taxonomy_id, $term_children, false ); // phpcs:ignore break; case 'product_cats': $is_active = is_product_category(); break; case 'product_tags': $is_active = is_product_tag(); break; case 'product_attr': $object = get_queried_object(); $taxonomy = is_object( $object ) && property_exists( $object, 'taxonomy' ) ? $object->taxonomy : false; $is_active = $taxonomy === $condition['condition_query']; break; case 'filtered_product_term': $condition_filter = sanitize_title( str_replace( 'pa_', '', $condition['condition_query'] ) ); $is_active = isset( $_GET[ 'filter_' . $condition_filter ] ); // phpcs:ignore break; case 'filtered_product_term_any': $chosen_attributes = WC_Query::get_layered_nav_chosen_attributes(); foreach ( $chosen_attributes as $taxonomy => $data ) { $filter_name = 'filter_' . wc_attribute_taxonomy_slug( $taxonomy ); $is_active = isset( $_GET[ $filter_name ] ); // phpcs:ignore } break; case 'filtered_product_stock_status': $is_active = isset( $_GET['stock_status'] ) && false !== strpos( $_GET['stock_status'], $condition['condition_query'] ); // phpcs:ignore break; } return $is_active; } /** * Override templates. * * @param string $template Template. * * @return bool|string */ public function override_template( $template ) { if ( woodmart_woocommerce_installed() && ( is_shop() || is_product_taxonomy() ) && Main::get_instance()->has_custom_layout( 'shop_archive' ) ) { $this->display_template(); return false; } return $template; } /** * Display custom template on the shop page. */ private function display_template() { $this->before_template_content(); $this->template_content( 'shop_archive' ); $this->after_template_content(); } /** * Before template content. */ public function before_template_content() { if ( woodmart_is_woo_ajax() === 'fragments' ) { woodmart_woocommerce_main_loop( true ); die(); } if ( ! woodmart_is_woo_ajax() ) { get_header(); } else { woodmart_page_top_part(); } do_action( 'woocommerce_before_main_content' ); woodmart_enqueue_inline_style( 'woo-shop-builder' ); } /** * Before template content. */ public function after_template_content() { do_action( 'woocommerce_after_main_content' ); if ( ! woodmart_is_woo_ajax() ) { get_footer(); } else { woodmart_page_bottom_part(); } } /** * Switch to preview query. * * @param array $new_query New query variables. */ public static function switch_to_preview_query( $new_query ) { if ( ! is_singular( 'woodmart_layout' ) && ! wp_doing_ajax() ) { return; } global $wp_query; $current_query_vars = $wp_query->query; // If is already switched, or is the same query, return. if ( $current_query_vars === $new_query ) { self::$switched_data[] = false; return; } $new_query = new WP_Query( $new_query ); $switched_data = array( 'switched' => $new_query, 'original' => $wp_query, ); if ( ! empty( $GLOBALS['post'] ) ) { $switched_data['post'] = $GLOBALS['post']; } self::$switched_data[] = $switched_data; $wp_query = $new_query; // phpcs:ignore // Ensure the global post is set only if needed. unset( $GLOBALS['post'] ); WC()->query->product_query( $new_query ); wc_set_loop_prop( 'total', 20 ); } /** * Restore default query. * * @return void */ public static function restore_current_query() { $data = array_pop( self::$switched_data ); // If not switched, return. if ( ! $data ) { wc_reset_loop(); return; } global $wp_query; $wp_query = $data['original']; // phpcs:ignore // Ensure the global post/authordata is set only if needed. unset( $GLOBALS['post'] ); if ( ! empty( $data['post'] ) ) { $GLOBALS['post'] = $data['post']; // phpcs:ignore setup_postdata( $GLOBALS['post'] ); } WC()->query->product_query( $wp_query ); wc_reset_loop(); } } Shop_Archive::get_instance();