PluginProbe ʕ •ᴥ•ʔ
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution / 4.9.1
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution v4.9.1
4.9.2 4.9.1 4.9.0 2.0.0 2.1.0 2.2.0 2.2.1 2.2.2 2.3.0 2.4.0 2.5.0 2.5.1 3.0.0 3.1.0 3.1.1 4.0.0 4.0.1 4.1.0 4.1.1 4.2.0 4.2.1 4.3.0 4.3.1 4.4.0 4.5.0 4.5.1 4.6.0 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 4.6.7 4.6.8 4.6.9 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.8.1 4.8.2 4.8.3 4.8.4 4.8.5 4.8.6 4.8.7 4.8.8 4.8.9 trunk 0.1.2-beta 0.1.3-beta 0.1.4-beta 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.2.1 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.5.0 1.5.1 1.6.0 1.6.1 1.7.0 1.8.0 1.8.1 1.9.0
shopengine / core / page-templates / hooks / single.php
shopengine / core / page-templates / hooks Last commit date
archive.php 1 week ago base-content.php 2 years ago base.php 1 week ago cart.php 1 week ago checkout.php 1 week ago shop.php 4 years ago single.php 1 week ago
single.php
114 lines
1 <?php
2
3 namespace ShopEngine\Core\Page_Templates\Hooks;
4
5 use ShopEngine\Core\Builders\Templates;
6
7 defined('ABSPATH') || exit;
8
9 class Single extends Base {
10
11 protected $page_type = 'single';
12 protected $template_part = 'content-single-product.php';
13
14 public function init() : void {
15 // nothing is going on here
16 add_action('wp_enqueue_scripts', [$this,'single_page_css_conflict_remove'], 20);
17
18 $this->delayed_hook_conflicts();
19 }
20
21 protected function get_page_type_option_slug(): string {
22 if(!empty($_REQUEST['nonce']) && wp_verify_nonce(sanitize_text_field(wp_unslash($_REQUEST['nonce'])), 'wp_rest')) {
23 return !empty($_REQUEST['shopengine_quickview']) && $_REQUEST['shopengine_quickview'] === 'modal-content' ? 'quick_view' : $this->page_type;
24 }
25 return $this->page_type;
26 }
27
28 protected function template_include_pre_condition() : bool {
29
30 return is_product();
31 }
32
33 public function before_hooks() {
34 do_action( 'woocommerce_before_single_product' );
35 }
36
37 public function after_hooks()
38 {
39 do_action( 'woocommerce_after_single_product' );
40 $themeName = get_template();
41 if ( $themeName == 'eduma' ) {
42 wp_dequeue_script('thim-main');
43 wp_dequeue_script('thim-custom-script');
44 }
45 }
46
47 public function single_page_css_conflict_remove() {
48
49 // Remove style and script for astra addon single product layout
50 if(is_plugin_active('astra-addon/astra-addon.php')) {
51
52 wp_dequeue_style('astra-addon-css');
53 }
54
55 if (function_exists('wp_get_theme')) {
56 $theme = wp_get_theme();
57 $active_theme = $theme->get('Name');
58
59 if ($active_theme === 'PHOX' || $active_theme === 'PHOX Child') {
60
61 wp_dequeue_style('wdes-woocommerce');
62 wp_dequeue_script('bootstrap');
63 }
64 }
65
66 $themeName = get_template();
67 // Remove Auxin Shop CSS if Auxin Shop is active
68 if(is_plugin_active('auxin-shop/auxin-shop.php')) {
69
70 wp_dequeue_style('auxin-shop');
71
72 } if ($themeName == 'phlox-pro') {
73
74 wp_dequeue_style('auxin-elementor-base');
75 }
76 }
77
78 public function delayed_hook_conflicts() {
79
80 if (is_plugin_active('auxin-shop/auxin-shop.php')) {
81
82 remove_filter('wc_get_template', 'auxshp_get_wc_template', 11, 2);
83
84 // Remove Auxin Shop template loader filter
85 global $wp_filter;
86 if (isset($wp_filter['woocommerce_locate_template'])) {
87 foreach ($wp_filter['woocommerce_locate_template']->callbacks as $priority => $callbacks) {
88 foreach ($callbacks as $key => $callback) {
89 if (is_array($callback['function']) &&
90 is_object($callback['function'][0]) &&
91 get_class($callback['function'][0]) === 'AUXSHP_Template_Loader' &&
92 $callback['function'][1] === 'load_templates') {
93 unset($wp_filter['woocommerce_locate_template']->callbacks[$priority][$key]);
94 }
95 }
96 }
97 }
98
99 if (isset($wp_filter['woocommerce_after_single_product']) &&
100 isset($wp_filter['woocommerce_after_single_product']->callbacks[20]) &&
101 is_array($wp_filter['woocommerce_after_single_product']->callbacks[20])) {
102 foreach ($wp_filter['woocommerce_after_single_product']->callbacks[20] as $key => $callback) {
103 if (is_array($callback['function']) &&
104 is_object($callback['function'][0]) &&
105 get_class($callback['function'][0]) === 'AUXSHP_Template_Loader' &&
106 $callback['function'][1] === 'auxshp_related_products') {
107 unset($wp_filter['woocommerce_after_single_product']->callbacks[20][$key]);
108 }
109 }
110 }
111 }
112 }
113 }
114