PluginProbe ʕ •ᴥ•ʔ
Kirki – Freeform Page Builder, Website Builder & Customizer / 6.2.1
Kirki – Freeform Page Builder, Website Builder & Customizer v6.2.1
6.2.1 6.2.0 6.1.1 6.1.0 6.0.14 6.0.13 6.0.12 6.0.11 6.0.10 6.0.9 6.0.8 6.0.7 6.0.6 6.0.5 6.0.4 6.0.3 6.0.2 6.0.1 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 4.0.19 4.0.20 4.0.21 4.0.22 4.0.23 4.0.24 4.1 4.2.0 5.0.0 5.1.0 5.1.1 5.2.0 5.2.1 5.2.2 5.2.3 6.0.0 trunk 3.0.40 3.0.41 3.0.42 3.0.43 3.0.44 3.0.45 3.1.0 3.1.1 3.1.2
kirki / includes / Frontend / TheFrontend.php
kirki / includes / Frontend Last commit date
Preview 3 days ago views 2 weeks ago Editor.php 1 month ago Iframe.php 3 months ago TheFrontend.php 3 days ago TheFrontendHooks.php 2 months ago
TheFrontend.php
165 lines
1 <?php
2
3 /**
4 * Front end post hooks and content controller
5 *
6 * @package kirki
7 */
8
9 namespace Kirki\Frontend;
10
11 if ( ! defined( 'ABSPATH' ) ) {
12 exit; // Exit if accessed directly.
13 }
14
15 use Kirki\Frontend\Preview\Preview;
16 use Kirki\HelperFunctions;
17 use Kirki\Admin\EditWithButton;
18
19 /**
20 * TheFrontend class
21 */
22 class TheFrontend {
23
24 /**
25 * Flag for where from call this instance
26 */
27 private $call_from = 'front-end';
28 private $staging_version = false;
29 private $assets_should_load = false;
30
31 /**
32 * Collect kirki type data header, footer, content, popups
33 */
34 private $kirki_type_html_data = array(
35 'content' => '',
36 'popups' => '',
37 );
38 /**
39 * Initialize the class
40 *
41 * @param string $call_from where from call this instance.
42 * @return void
43 */
44 public function __construct( $call_from = 'front-end', $staging_version = false ) {
45 if ( $call_from === 'iframe' ) {
46 remove_all_filters( 'the_content' );
47 }
48 $this->staging_version = $staging_version;
49
50 if ($this->staging_version) {
51 add_filter('show_admin_bar', '__return_false');
52 }
53
54 add_action( 'wp', array( $this, 'collect_all_kirki_type_data' ) );
55 add_action( 'wp_head', array( $this, 'add_inside_head_tag' ) );
56 add_filter( 'the_content', array( $this, 'replace_content' ), PHP_INT_MAX );
57 add_action( 'wp_footer', array( $this, 'add_before_body_tag_end' ) );
58
59 //phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
60 $action = HelperFunctions::sanitize_text( isset( $_GET['action'] ) ? $_GET['action'] : null );
61 if ( 'front-end' === $call_from && 'kirki' === $action ) {
62 $call_from = 'editor';
63 }
64 if ( 'front-end' === $call_from ) {
65 new EditWithButton();
66 }
67
68 new TheFrontendHooks( $call_from );
69
70 $this->call_from = $call_from;
71 }
72 /**
73 * Collect kirki related custom sections html string
74 *
75 * @return void
76 */
77 public function collect_all_kirki_type_data() {
78 $this->get_current_post_related_dependency();
79 }
80
81 /**
82 * Get Post preview related data.
83 * this function is called for enqueueing the icon assets and get only used style blocks
84 * and also get the html string of the preview
85 *
86 * @return void
87 */
88 public function get_current_post_related_dependency() {
89 $d = HelperFunctions::is_kirki_type_data( null, $this->staging_version );
90 $this->assets_should_load = ( $d && ( ! empty( $d['blocks'] ) || ! empty( $d['styles'] ) ) );
91
92 $GLOBALS['kirki_assets_should_load_for_request'] = $this->assets_should_load;
93
94 if ( $this->assets_should_load ) {
95 $params = array(
96 'blocks' => $d['blocks'],
97 'style_blocks' => $d['styles'],
98 'root' => 'root',
99 );
100
101 $this->kirki_type_html_data['content'] = HelperFunctions::get_html_using_preview_script( $params );
102 }
103 }
104
105
106 /**
107 * Add elements style to the header
108 *
109 * @return void
110 */
111 public function add_inside_head_tag() {
112 $s = '';
113 $s .= Preview::getSeoMetaTags();
114 $s .= Preview::getHeadCustomCode();
115 $s .= HelperFunctions::get_custom_fonts_tags();
116 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
117 echo $s;
118 }
119
120 /**
121 * Replace the content with our kirki data
122 *
123 * @param string $content wp content.
124 *
125 * @return the_contnet
126 */
127 public function replace_content( $content ) {
128 // $flag = false;
129 if ( 'iframe' === $this->call_from ) {
130 return '<div id="' . 'kirki-builder"></div>';
131 }
132
133 if ( $this->kirki_type_html_data['content'] ) {
134 $content = $this->kirki_type_html_data['content'];
135 }
136 // Decode HTML entities. Example: [gravityform id=&quot;1&quot;] → [gravityform id="1"]
137
138 // Run shortcode manually
139 $content = do_shortcode( $content );
140
141 if ( 'migration' === $this->call_from ) {
142 return '<div id="' . 'kirki-builder-migration">' . $content . '</div>';
143 }
144 return $content;
145 }
146
147 /**
148 * Add script tag to the footer
149 *
150 * @return void
151 */
152 public function add_before_body_tag_end() { // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
153 $s = '';
154 if ( 'iframe' !== $this->call_from ) {
155 $s = HelperFunctions::get_page_popups_html();
156 }
157
158 if ( $this->kirki_type_html_data['content'] ) {
159 $s .= Preview::getBodyCustomCode();
160 }
161 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
162 echo $s;
163 }
164 }
165