| @@ -30,12 +30,10 @@ | ||
| 30 | 30 | // The constructor |
| 31 | 31 | function __construct() { |
| 32 | 32 | |
| 33 | 33 | global $pagelayer; |
| 34 | - | |
| 35 | - $GLOBALS['concatenate_scripts'] = true; | |
| 36 | - | |
| 37 | - // Convert the post to a PageLayer Post first | |
| 34 | + | |
| 35 | + // Convert the post to a Pagelayer Post first | |
| 38 | 36 | $this->check_post(); |
| 39 | 37 | |
| 40 | 38 | // Add the shortcodes |
| 41 | 39 | // TODO : Make a json file |
| @@ -44,18 +42,42 @@ | ||
| 44 | 42 | // Add the Body Class Filter |
| 45 | 43 | //add_filter('body_class', array($this, 'body_class')); |
| 46 | 44 | |
| 47 | 45 | // Add the content handler |
| 48 | - add_filter('the_content', array($this, 'the_content')); | |
| 49 | - | |
| 46 | + add_filter('the_content', array($this, 'the_content'), 999999); | |
| 47 | + | |
| 48 | + // Skip do_blocks for invalid blocks | |
| 49 | + add_filter( 'pre_render_block', array($this, 'pre_do_render_block'), 10, 3 ); | |
| 50 | + | |
| 51 | + // Skip do_shortcode for invalid shortcodes | |
| 52 | + add_filter( 'pre_do_shortcode_tag', array($this, 'pre_do_shortcode_tag'), 10, 4 ); | |
| 53 | + | |
| 54 | + // Build the Shortcodes MD5 for cache | |
| 55 | + $scmd5 = md5(json_encode($pagelayer->shortcodes).json_encode($pagelayer->groups).json_encode($pagelayer->styles)); | |
| 56 | + | |
| 57 | + $premium_js = apply_filters('pagelayer_editor_give_js', ''); | |
| 58 | + $premium_css = apply_filters('pagelayer_editor_give_css', ''); | |
| 59 | + | |
| 50 | 60 | // Enqueue our Editor's JS |
| 51 | - wp_register_script('pagelayer-editor', PAGELAYER_JS.'/givejs.php?give=pagelayer-editor.js,widgets.js,'.(defined('PAGELAYER_PREMIUM') ? 'premium.js,' : '').'properties.js,base64.js,slimscroll.js,vanilla-picker.min.js,trumbowyg.js,trumbowyg-pagelayer.js,pen.js', array('jquery'), PAGELAYER_VERSION); | |
| 61 | + wp_register_script('pagelayer-editor', admin_url( 'admin-ajax.php?action=pagelayer_givejs' ).'&give=pagelayer-editor.js,widgets.js,properties.js,base-64.min.js,slimscroll.js,vanilla-picker.min.js,trumbowyg.js,trumbowyg.fontfamily.js,trumbowyg-pagelayer.js,tlite.min.js,pagelayer-pen.js'.$premium_js.'&pagelayer_nonce=1&scmd5='.$scmd5, array('jquery'), PAGELAYER_VERSION); | |
| 62 | + | |
| 52 | 63 | wp_enqueue_script('pagelayer-editor'); |
| 53 | 64 | |
| 65 | + $css_url = admin_url('admin-ajax.php?action=pagelayer_givecss&pagelayer_nonce=1&'); | |
| 66 | + if(pagelayer_enable_giver()){ | |
| 67 | + $css_url = PAGELAYER_CSS.'/givecss.php?'; | |
| 68 | + } | |
| 69 | + | |
| 54 | 70 | // Enqueue the Editor's CSS |
| 55 | - wp_register_style('pagelayer-editor', PAGELAYER_CSS.'/givecss.php?give=pagelayer-editor-frontend.css,pen.css', array(), PAGELAYER_VERSION); | |
| 71 | + wp_register_style('pagelayer-editor', $css_url.'give=pagelayer-editor-frontend.css,pagelayer-pen.css,'.(defined('PAGELAYER_PREMIUM') ? ',owl.theme.default.min.css,owl.carousel.min.css' : '').$premium_css, array(), PAGELAYER_VERSION); | |
| 56 | 72 | wp_enqueue_style('pagelayer-editor'); |
| 57 | 73 | |
| 74 | + // Enqueue AI Layout Generator | |
| 75 | + wp_register_script('pagelayer-ai', PAGELAYER_JS.'/pagelayer-ai.js', array('jquery', 'pagelayer-editor'), PAGELAYER_VERSION, true); | |
| 76 | + wp_enqueue_script('pagelayer-ai'); | |
| 77 | + wp_register_style('pagelayer-ai', PAGELAYER_CSS.'/pagelayer-ai.css', array(), PAGELAYER_VERSION); | |
| 78 | + wp_enqueue_style('pagelayer-ai'); | |
| 79 | + | |
| 58 | 80 | // Enqueue the DateTime picker CSS |
| 59 | 81 | /* wp_register_style('datetime-picker', PAGELAYER_CSS.'/datetime-picker.css', array(), PAGELAYER_VERSION); |
| 60 | 82 | wp_enqueue_style('datetime-picker'); */ |
| 61 | 83 | |
| @@ -68,8 +90,9 @@ | ||
| 68 | 90 | pagelayer_enqueue_frontend(true); |
| 69 | 91 | |
| 70 | 92 | // Hide Admin Bar |
| 71 | 93 | show_admin_bar(false); |
| 94 | + remove_action('wp_head', '_admin_bar_bump_cb'); | |
| 72 | 95 | |
| 73 | 96 | // Load custom widgets |
| 74 | 97 | do_action('pagelayer_custom_editor_enqueue'); |
| 75 | 98 | |
| @@ -85,30 +108,198 @@ | ||
| 85 | 108 | |
| 86 | 109 | // Header function to add certain things |
| 87 | 110 | function wp_head(){ |
| 88 | 111 | |
| 89 | - global $pagelayer, $post; | |
| 112 | + global $pagelayer, $post, $wp_query, $_wp_post_type_features; | |
| 90 | 113 | |
| 91 | - $returnURL = (!is_page($post->ID) ? admin_url('edit.php') : admin_url('edit.php?post_type=page') ); | |
| 114 | + // Export the post props | |
| 115 | + $_post = clone $post; | |
| 92 | 116 | |
| 117 | + unset($_post->post_content); | |
| 118 | + | |
| 119 | + // Add template type | |
| 120 | + if(!empty($pagelayer->template_editor)){ | |
| 121 | + $_post->pagelayer_template_type = get_post_meta($_post->ID, 'pagelayer_template_type', true); | |
| 122 | + } | |
| 123 | + | |
| 124 | + $returnURL = ($_post->post_type == 'post' ? admin_url('edit.php') : admin_url('edit.php?post_type='.$_post->post_type) ); | |
| 125 | + | |
| 126 | + // Get CAPTCHA site key | |
| 127 | + $pagelayer_recaptch_site_key = get_option('pagelayer_google_captcha'); | |
| 128 | + | |
| 129 | + $pro_url = defined('POPULARFX_PRO_URL') ? POPULARFX_PRO_URL : PAGELAYER_PRO_PRICE_URL; | |
| 130 | + $pro_txt = defined('POPULARFX_PRO_URL') ? 'PopularFX Pro' : 'Pagelayer Pro'; | |
| 131 | + $post_type = get_post_type_object($post->post_type); | |
| 132 | + $post_type_name = (!empty($post_type->labels->singular_name)) ? $post_type->labels->singular_name : ucfirst($post_type->name); | |
| 133 | + | |
| 134 | + // Create list of nav menus and it's items list | |
| 135 | + $pagelayer_menus_items_list = array(); | |
| 136 | + $menus = wp_get_nav_menus(); | |
| 137 | + | |
| 138 | + $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; | |
| 139 | + | |
| 140 | + foreach($menus as $menu){ | |
| 141 | + | |
| 142 | + if(!is_nav_menu($menu)){ | |
| 143 | + continue; | |
| 144 | + } | |
| 145 | + | |
| 146 | + $pagelayer_menus_items_list[$menu->term_id] = wp_get_nav_menu_items($menu->term_id, array('post_status' => 'any')); | |
| 147 | + } | |
| 148 | + | |
| 93 | 149 | echo ' |
| 94 | 150 | <script type="text/javascript"> |
| 95 | -pagelayer_ver = "'.PAGELAYER_VERSION .'"; | |
| 96 | -pagelayer_shortcodes = '.json_encode($pagelayer->shortcodes).'; | |
| 97 | -pagelayer_styles = '.json_encode($pagelayer->styles).'; | |
| 98 | -pagelayer_groups = '.json_encode($pagelayer->groups).'; | |
| 99 | -pagelayer_ajax_url = "'.admin_url( 'admin-ajax.php' ).'"; | |
| 151 | +pagelayer_ver = "'.PAGELAYER_VERSION.'"; | |
| 152 | +pagelayer_block_prefix = "'.PAGELAYER_BLOCK_PREFIX.'"; | |
| 153 | +pagelayer_pro = '.(int)defined('PAGELAYER_PREMIUM').'; | |
| 154 | +pagelayer_pro_url = "'.PAGELAYER_PRO_PRICE_URL.'"; | |
| 155 | +pagelayer_pro_txt = "'.addslashes('This feature is a part of <a href="'.$pro_url.'" target="_blank">'.$pro_txt.'</a>. You will need purchase <a href="'.$pro_url.'" target="_blank">'.$pro_txt.'</a> to use this feature.').'"; | |
| 156 | +pagelayer_api_url = "'.PAGELAYER_API.'"; | |
| 157 | +pagelayer_ajax_url = "'.admin_url( 'admin-ajax.php' ).'?&"; | |
| 158 | +pagelayer_post_props = "'.admin_url( 'admin.php?page=pagelayer_meta_setting&post=' ).$post->ID.'"; | |
| 100 | 159 | pagelayer_ajax_nonce = "'.wp_create_nonce('pagelayer_ajax').'"; |
| 160 | +pagelayer_media_ajax_nonce = "'.wp_create_nonce('media-form').'"; | |
| 161 | +pagelayer_internal_linking_nonce = "'.wp_create_nonce('internal-linking').'"; | |
| 162 | +pagelayer_preview_nonce = "'. wp_create_nonce( 'post_preview_' . $post->ID ).'"; | |
| 101 | 163 | pagelayer_url = "'.PAGELAYER_URL.'"; |
| 102 | 164 | pagelayer_postID = "'.$post->ID.'"; |
| 165 | +pagelayer_permalink_structure = "'.(empty(get_option('permalink_structure')) ? 0 : 1).'"; | |
| 166 | +pagelayer_post_permalink = "'.get_permalink($post->ID).'"; | |
| 103 | 167 | pagelayer_tabs = '.json_encode($pagelayer->tabs).'; |
| 104 | 168 | pagelayer_isDirty = false; |
| 105 | 169 | pagelayer_returnURL = "'.$returnURL.'"; |
| 170 | +pagelayer_theme_vars = '.json_encode( pagelayer_template_vars() ).'; | |
| 171 | +pagelayer_revision_obj = '.json_encode( pagelayer_get_post_revision_by_id( $post->ID ) ).'; | |
| 172 | +pagelayer_author = '.json_encode(pagelayer_author_data($post->ID)).'; | |
| 173 | +pagelayer_site_logo = '.json_encode(pagelayer_site_logo()).'; | |
| 174 | +pagelayer_support_FI = "'. ( current_theme_supports('post-thumbnails') ) .'"; | |
| 175 | +pagelayer_editable = ".'.(!empty($pagelayer->template_editor) ? $pagelayer->template_editor : 'pagelayer-editable-area').'"; | |
| 176 | +pagelayer_recaptch_site_key = "'.(!empty($pagelayer_recaptch_site_key) ? $pagelayer_recaptch_site_key : '').'"; | |
| 177 | +pagelayer_post = '. @json_encode($_post) .'; | |
| 178 | +pagelayer_loaded_icons = '.json_encode(pagelayer_enabled_icons()).'; | |
| 179 | +pagelayer_social_urls = '.json_encode(pagelayer_get_social_urls()).'; | |
| 180 | +pagelayer_global_widgets = '.json_encode($pagelayer->global_widgets).'; | |
| 181 | +pagelayer_saved_sections = '.json_encode($pagelayer->saved_sections).'; | |
| 182 | +pagelayer_global_sections = '.json_encode($pagelayer->global_sections).'; | |
| 183 | +pagelayer_brand = "'.addslashes($pagelayer->BRAND_TEXT).'"; | |
| 184 | +pagelayer_post_type_features = '.json_encode(@$_wp_post_type_features[$post->post_type]).'; | |
| 185 | +pagelayer_post_categories = '.json_encode(pagelayer_post_cats($post)).'; | |
| 186 | +pagelayer_post_tags = '.json_encode(pagelayer_post_tags($post)).'; | |
| 187 | +pagelayer_shortcodes.pl_post_props.name = "'.ucfirst($post_type_name).' '. __pl('Settings').'"; | |
| 188 | +pagelayer_shortcodes.pl_post_props.params.post_author.list = '.json_encode(pagelayer_post_authors_by_type($post->post_type)).'; | |
| 189 | +pagelayer_shortcodes.pl_post_props.pageParent.post_parent.list = '.json_encode(pagelayer_parent_post_prop($post)).'; | |
| 190 | +pagelayer_gmaps_key = "'.get_option('pagelayer-gmaps-api-key').'"; | |
| 191 | +pagelayer_ajax_post_data = {}; | |
| 192 | +pagelayer_menus_items_list = '.json_encode($pagelayer_menus_items_list).'; | |
| 193 | +pagelayer_customizer_values = '.json_encode(pagelayer_get_customizer_options()).'; | |
| 194 | +pagelayer_global_colors = '.json_encode($pagelayer->global_colors).'; | |
| 195 | +pagelayer_global_fonts = '.json_encode($pagelayer->global_fonts).'; | |
| 196 | +pagelayer_customizer_url = "'.admin_url("/customize.php?return=").urlencode($referer).'"; | |
| 197 | +pagelayer_support_url = "'.$pagelayer->support .'"; | |
| 198 | +pagelayer_ai_settings = '.json_encode(array( | |
| 199 | + 'rest_url' => esc_url_raw(rest_url('pagelayer/v1/ai/')), | |
| 200 | + 'nonce' => wp_create_nonce('wp_rest'), | |
| 201 | + 'ajax_url' => admin_url('admin-ajax.php'), | |
| 202 | + 'ajax_nonce' => wp_create_nonce('pagelayer_ajax'), | |
| 203 | + 'css_url' => PAGELAYER_CSS.'/pagelayer-ai.css', | |
| 204 | + 'current_post_id' => $post->ID, | |
| 205 | + 'current_post_title' => $post->post_title, | |
| 206 | + 'has_custom_globals' => class_exists('Pagelayer_AI_Layout_Engine') ? Pagelayer_AI_Layout_Engine::instance()->has_custom_globals() : false, | |
| 207 | + 'providers' => class_exists('Pagelayer_AI_Controller') ? Pagelayer_AI_Controller::get_instance()->get_available_models() : array(), | |
| 208 | + 'user_settings' => class_exists('Pagelayer_AI_Controller') ? Pagelayer_AI_Controller::get_instance()->get_user_ai_settings() : array(), | |
| 209 | +)).';'; | |
| 210 | + | |
| 211 | +if(defined('PAGELAYER_PREMIUM')){ | |
| 212 | + echo 'pagelayer_shortcodes.pl_popup.advance_options.popup_cookie_name.default = "popup_cookie_'.rand(100, 999).'";'; | |
| 213 | +} | |
| 214 | + | |
| 215 | +// Detect JS via givejs for better performance | |
| 216 | +if(empty($pagelayer->settings['enable_giver'])){ | |
| 217 | + echo ' | |
| 218 | +jQuery(document).ready(function(){ | |
| 219 | + var test_giver = -1; | |
| 220 | + | |
| 221 | + return jQuery.ajax({ | |
| 222 | + url: "'.PAGELAYER_JS.'/givejs.php?test=1", | |
| 223 | + type: "GET", | |
| 224 | + dataType: "text", | |
| 225 | + success:function(data){ | |
| 226 | + | |
| 227 | + if(data !== "1"){ | |
| 228 | + return; | |
| 229 | + } | |
| 230 | + | |
| 231 | + test_giver = 1; | |
| 232 | + }, | |
| 233 | + complete:function(data){ | |
| 234 | + jQuery.ajax({ | |
| 235 | + type: "POST", | |
| 236 | + url: pagelayer_ajax_url+"&action=pagelayer_set_jscss_giver", | |
| 237 | + data: { | |
| 238 | + pagelayer_nonce: pagelayer_ajax_nonce, | |
| 239 | + set : test_giver | |
| 240 | + }, | |
| 241 | + error: function(errorThrown){ | |
| 242 | + console.log("Error saving giver data"); | |
| 243 | + console.log(errorThrown); | |
| 244 | + } | |
| 245 | + }); | |
| 246 | + | |
| 247 | + } | |
| 248 | + }); | |
| 249 | +}); | |
| 250 | +'; | |
| 251 | +} | |
| 252 | + | |
| 253 | +echo ' | |
| 106 | 254 | </script>'; |
| 255 | + | |
| 256 | + echo '<style> | |
| 257 | +@media (min-width: '.($pagelayer->settings['tablet_breakpoint'] + 1).'px){ | |
| 258 | +.pagelayer-hide-desktop{ | |
| 259 | +display:initial; | |
| 260 | +filter:blur(3px); | |
| 261 | +} | |
| 262 | +.pagelayer-hide-desktop *{ | |
| 263 | +filter:blur(2px); | |
| 264 | +} | |
| 265 | +} | |
| 266 | + | |
| 267 | +@media (max-width: '.$pagelayer->settings['tablet_breakpoint'].'px) and (min-width: '.($pagelayer->settings['mobile_breakpoint'] + 1).'px){ | |
| 268 | +.pagelayer-hide-tablet{ | |
| 269 | +display:initial; | |
| 270 | +filter:blur(3px); | |
| 271 | +} | |
| 272 | +.pagelayer-hide-tablet *{ | |
| 273 | +filter:blur(2px); | |
| 274 | +} | |
| 275 | +} | |
| 276 | + | |
| 277 | +@media (max-width: '.$pagelayer->settings['mobile_breakpoint'].'px){ | |
| 278 | +.pagelayer-hide-mobile{ | |
| 279 | +display:initial; | |
| 280 | +filter:blur(3px); | |
| 281 | +} | |
| 282 | + | |
| 283 | +.pagelayer-hide-mobile *{ | |
| 284 | +filter:blur(2px); | |
| 285 | +} | |
| 286 | +} | |
| 287 | +</style>'; | |
| 288 | + do_action('pagelayer_editor_wp_head'); | |
| 289 | + | |
| 107 | 290 | } |
| 108 | 291 | |
| 109 | 292 | // Footer function to add certain things |
| 110 | 293 | function wp_footer(){ |
| 294 | + | |
| 295 | + global $pagelayer; | |
| 296 | + | |
| 297 | + echo '<script> | |
| 298 | +pagelayer_default_params = '.json_encode($pagelayer->default_params, JSON_FORCE_OBJECT).'; | |
| 299 | +pagelayer.el = '.json_encode($pagelayer->data_attr, JSON_FORCE_OBJECT).'; | |
| 300 | +</script>'; | |
| 301 | + | |
| 111 | 302 | wp_enqueue_script('heartbeat'); |
| 112 | 303 | _wp_footer_scripts(); |
| 113 | 304 | } |
| 114 | 305 | |
| @@ -122,22 +313,26 @@ | ||
| 122 | 313 | |
| 123 | 314 | if(empty($data)){ |
| 124 | 315 | |
| 125 | 316 | // Is it a Gutenburg Post ? |
| 126 | - if(false){ | |
| 317 | + if(!empty($post->post_content)){ | |
| 318 | + | |
| 319 | + // Add our surrounding tag | |
| 320 | + $post->post_content = '<!-- '.PAGELAYER_BLOCK_PREFIX.':pagelayer/pl_row --> | |
| 321 | +<!-- '.PAGELAYER_BLOCK_PREFIX.':pagelayer/pl_col {col=12} --> | |
| 322 | +'.$post->post_content.' | |
| 323 | +<!-- /'.PAGELAYER_BLOCK_PREFIX.':pagelayer/pl_col --> | |
| 324 | +<!-- /'.PAGELAYER_BLOCK_PREFIX.':pagelayer/pl_row -->'; | |
| 127 | 325 | |
| 128 | - // Regular post | |
| 326 | + // Regular post, but its empty so we will add our blocks ! | |
| 129 | 327 | }else{ |
| 130 | 328 | |
| 131 | 329 | // Add our surrounding tag |
| 132 | - $post->post_content = '['.PAGELAYER_SC_PREFIX.'_row] | |
| 133 | -['.PAGELAYER_SC_PREFIX.'_col col=12] | |
| 134 | -['.PAGELAYER_SC_PREFIX.'_text] | |
| 135 | -'.$post->post_content.' | |
| 136 | -[/'.PAGELAYER_SC_PREFIX.'_text] | |
| 137 | -[/'.PAGELAYER_SC_PREFIX.'_col] | |
| 138 | -[/'.PAGELAYER_SC_PREFIX.'_row]'; | |
| 139 | - | |
| 330 | + $post->post_content = '<!-- '.PAGELAYER_BLOCK_PREFIX.':pagelayer/pl_row {"stretch":"auto","col_gap":"10","width_content":"auto","row_height":"default","overlay_hover_delay":"400","row_shape_top_color":"#227bc3","row_shape_top_width":"100","row_shape_top_height":"100","row_shape_bottom_color":"#e44993","row_shape_bottom_width":"100","row_shape_bottom_height":"100","pagelayer-id":""} --> | |
| 331 | +<!-- '.PAGELAYER_BLOCK_PREFIX.':pagelayer/pl_col {"overlay_hover_delay":"400","pagelayer-id":""} --> | |
| 332 | +<!-- /'.PAGELAYER_BLOCK_PREFIX.':pagelayer/pl_col --> | |
| 333 | +<!-- /'.PAGELAYER_BLOCK_PREFIX.':pagelayer/pl_row -->'; | |
| 334 | + | |
| 140 | 335 | // Update the post |
| 141 | 336 | $new_post = array( |
| 142 | 337 | 'ID' => $post->ID, |
| 143 | 338 | 'post_content' => $post->post_content, |
| @@ -145,13 +340,13 @@ | ||
| 145 | 340 | |
| 146 | 341 | // Update the post into the database |
| 147 | 342 | wp_update_post($new_post); |
| 148 | 343 | |
| 149 | - } | |
| 344 | + // Convert to pagelayer accessed post | |
| 345 | + if(!add_post_meta($post->ID, 'pagelayer-data', time(), true)){ | |
| 346 | + update_post_meta($post->ID, 'pagelayer-data', time()); | |
| 347 | + } | |
| 150 | 348 | |
| 151 | - // Convert to pagelayer accessed post | |
| 152 | - if(!add_post_meta($post->ID, 'pagelayer-data', time(), true)){ | |
| 153 | - update_post_meta($post->ID, 'pagelayer-data', time()); | |
| 154 | 349 | } |
| 155 | 350 | } |
| 156 | 351 | |
| 157 | 352 | } |
| @@ -158,10 +353,14 @@ | ||
| 158 | 353 | |
| 159 | 354 | // Add certain things |
| 160 | 355 | function the_content($content) { |
| 161 | 356 | |
| 162 | - global $post; | |
| 163 | - | |
| 357 | + global $post, $pagelayer; | |
| 358 | + | |
| 359 | + if(empty($pagelayer->dont_make_editable)){ | |
| 360 | + $content = '<div class="pagelayer-editable-area">'.$content.'</div>'; | |
| 361 | + } | |
| 362 | + | |
| 164 | 363 | // Check if we're inside the main loop in a single post page. |
| 165 | 364 | if ( is_single() && in_the_loop() && is_main_query() ) { |
| 166 | 365 | return $content; |
| 167 | 366 | } |
| @@ -168,6 +367,66 @@ | ||
| 168 | 367 | |
| 169 | 368 | return $content; |
| 170 | 369 | |
| 171 | 370 | } |
| 371 | + | |
| 372 | + // Skip do_shortcode for invalid shortcodes | |
| 373 | + function pre_do_shortcode_tag($return, $tag, $attr, $m){ | |
| 374 | + | |
| 375 | + if(!empty($pagelayer->dont_make_editable) || ! doing_filter('the_content')){ | |
| 376 | + return $return; | |
| 377 | + } | |
| 378 | + | |
| 379 | + $prefixes = ['pl_']; | |
| 380 | + | |
| 381 | + $prefixes = apply_filters( 'pagelayer_valid_shortcode_tag', $prefixes); | |
| 382 | + | |
| 383 | + $vailid = false; | |
| 172 | 384 | |
| 173 | -} | |
| 385 | + foreach($prefixes as $prefix) { | |
| 386 | + if (strpos($tag, $prefix) === 0) { | |
| 387 | + $vailid = true; | |
| 388 | + break; | |
| 389 | + } | |
| 390 | + } | |
| 391 | + | |
| 392 | + if($vailid){ | |
| 393 | + return $return; | |
| 394 | + } | |
| 395 | + | |
| 396 | + return $m[0]; | |
| 397 | + } | |
| 398 | + | |
| 399 | + // Skip do_blocks for invalid blocks | |
| 400 | + function pre_do_render_block($return, $parsed_block = [], $parent_block = null){ | |
| 401 | + | |
| 402 | + if(!empty($pagelayer->dont_make_editable) || ! doing_filter('the_content') || empty($parsed_block['blockName'])){ | |
| 403 | + return $return; | |
| 404 | + } | |
| 405 | + | |
| 406 | + $prefixes = ['pagelayer/']; | |
| 407 | + | |
| 408 | + $prefixes = apply_filters( 'pagelayer_valid_block_tag', $prefixes); | |
| 409 | + | |
| 410 | + $vailid = false; | |
| 411 | + | |
| 412 | + foreach($prefixes as $prefix) { | |
| 413 | + if (strpos($parsed_block['blockName'], $prefix) === 0) { | |
| 414 | + $vailid = true; | |
| 415 | + break; | |
| 416 | + } | |
| 417 | + } | |
| 418 | + | |
| 419 | + if($vailid){ | |
| 420 | + return $return; | |
| 421 | + } | |
| 422 | + | |
| 423 | + $serialize_block = serialize_block($parsed_block); | |
| 424 | + | |
| 425 | + $parsed_block['blockName'] = 'pagelayer/pl_missing'; | |
| 426 | + $parsed_block['innerHTML'] = $serialize_block; | |
| 427 | + $parsed_block['attrs'] = []; | |
| 428 | + | |
| 429 | + return render_block($parsed_block); | |
| 430 | + } | |
| 431 | + | |
| 432 | +} | |