PluginProbe ʕ •ᴥ•ʔ
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution / 3.1.0
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution v3.1.0
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 / base-content.php
shopengine / core / page-templates / hooks Last commit date
archive.php 3 years ago base-content.php 3 years ago base.php 3 years ago cart.php 3 years ago checkout.php 3 years ago shop.php 3 years ago single.php 3 years ago
base-content.php
70 lines
1 <?php
2 namespace ShopEngine\Core\Page_Templates\Hooks;
3
4 defined('ABSPATH') || exit;
5
6
7 class Base_Content{
8 public $prod_tpl_id;
9 public $prod_tpl_slug;
10
11 use \ShopEngine\Traits\Singleton;
12
13 public function set_tpl_data($id, $slug) {
14
15 if(!empty($_GET['change_template']) && !empty($_GET['shopengine_template_id']) && !empty($_GET['preview_nonce'])){
16 $shopengine_template_id = sanitize_text_field(wp_unslash($_GET['shopengine_template_id']));
17 if(1 === wp_verify_nonce(sanitize_text_field(wp_unslash($_GET['preview_nonce'])), 'template_preview_' . $shopengine_template_id)){
18 $id = $this->get_revision_or_main_post($shopengine_template_id);
19 }
20 }
21
22 $this->prod_tpl_id = $id;
23 $this->prod_tpl_slug = $slug;
24 }
25
26 public function get_revision_or_main_post($main_post_id){
27 $main_post = get_post($main_post_id);
28 $latest_revision = wp_get_post_revisions( $main_post->ID );
29 $latest_revision = array_shift( $latest_revision );
30
31 if(!empty($latest_revision) && strtotime($latest_revision->post_modified) > strtotime($main_post->post_modified)){
32 return $latest_revision->ID;
33 }
34
35 return $main_post->ID;
36 }
37
38 public function content_filter() {
39 if(did_action('elementor/loaded')) {
40 remove_filter('the_content', [
41 \ShopEngine\Core\Page_Templates\Hooks\Base_Content::instance(),
42 'content_filter'
43 ]);
44
45 return \Elementor\Plugin::$instance->frontend->get_builder_content_for_display($this->prod_tpl_id);
46 }
47 }
48
49 public function load_content_designed_from_builder($base = null) {
50
51 //phpcs:ignore WordPress.Security.NonceVerification.Recommended -- It's a fronted user part, not possible to verify nonce here
52 if((isset($_GET['elementor-preview']) && $_GET['elementor-preview'] == $this->prod_tpl_id) || is_preview()){ } else {
53 add_filter('the_content', [$this, 'content_filter']);
54 }
55
56 do_action('shopengine/templates/elementor/content/before', $this->prod_tpl_slug);
57 do_action('shopengine/templates/elementor/content/before_' . $this->prod_tpl_slug);
58
59 if ($base instanceof Base) {
60 $base->before_hooks();
61 the_content();
62 $base->after_hooks();
63 } else {
64 the_content();
65 }
66
67 do_action('shopengine/templates/elementor/content/after_' . $this->prod_tpl_slug);
68 do_action('shopengine/templates/elementor/content/after', $this->prod_tpl_slug);
69 }
70 }