PluginProbe
LoftLoader / 2.3.2
LoftLoader v2.3.2
trunk 1.0.0 1.0.1 1.0.2 2.0.0 2.1.0 2.1.1 2.1.10 2.1.11 2.1.12 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.3 2.3.1 2.3.2 2.3.3 All 34 releases
loftloader / inc / any-page / class-any-page-filter.php

class-any-page-filter.php in LoftLoader 2.3.2, at inc/any-page/class-any-page-filter.php

97 lines 3.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! class_exists('LoftLoader_Any_Page_Filter' ) ) {
3 class LoftLoader_Any_Page_Filter {
4 private $defaults = array();
5 private $page_settings = array();
6 private $page_enabled = false;
7 private $is_customize = false;
8 public function __construct() {
9 add_filter( 'loftloader_get_loader_setting', array( $this, 'get_loader_setting' ), 10, 2 );
10 add_filter( 'loftloader_loader_enabled', array( $this, 'loader_enabled' ) );
11 add_filter( 'loftloader_loader_attributes', array( $this, 'data_attributes' ) );
12 add_action( 'loftloader_settings', array( $this, 'loader_settings' ) );
13 }
14 /**
15 * @description get the plugin settings
16 */
17 public function loader_settings() {
18 global $wp_customize, $loftloader_default_settings;
19 $this->is_customize = isset( $wp_customize ) ? true : false;
20 if ( $this->is_any_page_extension_enabled() ) {
21 $page = $this->get_queried_object();
22 if ( ( $atts = $this->get_loader_attributes( $page->ID ) ) !== false ) {
23 if ( isset( $atts['loftloader_show_close_tip'] ) ) {
24 $atts['loftloader_show_close_tip'] = base64_decode( $atts['loftloader_show_close_tip'] );
25 }
26 $this->page_settings = array_intersect_key( $atts, $loftloader_default_settings );
27 $this->page_enabled = isset( $atts['loftloader_main_switch'] ) && ( $atts['loftloader_main_switch'] === 'on' );
28 }
29 }
30 }
31 /**
32 * @description helper function to get shortcode attributes
33 */
34 private function get_loader_attributes( $page_id ) {
35 $loader = get_post_meta( $page_id, 'loftloader_page_shortcode', true );
36 $loader = trim( $loader );
37 if ( ! empty( $loader ) ) {
38 $loader = substr( $loader, 1, -1 );
39 return shortcode_parse_atts( $loader );
40 }
41 return false;
42 }
43 /**
44 * Helper function to test whether show loftloader
45 * @return boolean return true if loftloader enabled and display on current page, otherwise false
46 */
47 public function loader_enabled() {
48 return $this->page_enabled;
49 }
50 /**
51 * Helper function get setting option
52 */
53 public function get_loader_setting( $setting_value, $setting_id ) {
54 return ( $this->page_enabled && !$this->is_customize && isset( $this->page_settings[ $setting_id ] ) ) ? $this->page_settings[ $setting_id ] : $setting_value;
55 }
56
57 /**
58 * Help function to test if any page extension enabled on current page
59 */
60 protected function is_any_page_extension_enabled() {
61 $is_fromt_home_page = ( is_front_page() || is_home() ) && ( get_option('show_on_front', false ) == 'page' );
62 $is_shop_page = $this->is_woocommerce_shop();
63 return $is_fromt_home_page || $is_shop_page || is_page();
64 }
65 /**
66 * Get queried page object
67 */
68 protected function get_queried_object() {
69 if ( $this->is_woocommerce_shop() ) {
70 $page_id = wc_get_page_id( 'shop' );
71 return get_page( $page_id );
72 } else {
73 return get_queried_object();
74 }
75 }
76 /**
77 * Condition function test if is woocommerce shop page
78 */
79 protected function is_woocommerce_shop() {
80 if ( function_exists( 'is_shop' ) ) {
81 $page_id = wc_get_page_id( 'shop' );
82 return ! empty( $page_id ) && ( $page_id !== -1 ) && is_shop();
83 }
84 return false;
85 }
86 /**
87 * Add data to loader wrapper to identify the loader is from any page shortcode
88 */
89 public function data_attributes( $attr ) {
90 if ( $this->page_enabled ) {
91 $attr .= ' data-any-page-extension="true"';
92 }
93 return $attr;
94 }
95 }
96 }
97