prefix."pagelayer_logs`"; foreach($sql as $sk => $sv){ $wpdb->query($sv); }*/ add_option('pagelayer_version', PAGELAYER_VERSION); add_option('pagelayer_options', array()); } // Checks if we are to update ? function pagelayer_update_check(){ global $wpdb; $sql = array(); $current_version = get_option('pagelayer_version'); $version = (int) str_replace('.', '', $current_version); // No update required if($current_version == PAGELAYER_VERSION){ return true; } // Is it first run ? if(empty($current_version)){ // Reinstall pagelayer_activation(); // Trick the following if conditions to not run $version = (int) str_replace('.', '', PAGELAYER_VERSION); } // Backward compatibility of global typography if(version_compare($current_version, '1.7.0', '<') && !defined('SITEPAD')){ // Set the array $_pagelayer = new PageLayer(); $post_types = array('' => __('Global')); $exclude = [ 'attachment', 'pagelayer-template' ]; $pt_objects = get_post_types(['public' => true,], 'objects'); foreach( $pt_objects as $pt_slug => $type ){ if ( in_array( $pt_slug, $exclude ) ) { continue; } $post_types[$pt_slug] = $type->labels->name; } foreach($post_types as $sk => $sv){ $post_type = empty($sk) ? '' : '_'.$sk; // Load CSS settings foreach($_pagelayer->css_settings as $k => $params){ foreach($_pagelayer->screens as $sck => $scv){ $suffix = (!empty($scv) ? '_'.$scv : ''); $setting = empty($params['key']) ? 'pagelayer_'.$k.'_css'.$post_type : $params['key'].$post_type; $tmp = get_option($setting.$suffix); if(empty($tmp) || empty($tmp['global-font'])){ continue; } // Do empty typo if global set foreach($tmp as $tk => $tv){ if(!in_array($tk, $_pagelayer->typo_props)){ continue; } $tmp[$tk] = ''; } // Update settings update_option($setting.$suffix, $tmp); } } } } // Show changelog notice if(version_compare($current_version, '1.8.1', '<') && !defined('SITEPAD')){ update_option('pagelayer_changelog_notice', 1); } // Save the new Version update_option('pagelayer_version', PAGELAYER_VERSION); } // Add the action to load the plugin add_action('plugins_loaded', 'pagelayer_load_plugin', 9); // The function that will be called when the plugin is loaded function pagelayer_load_plugin(){ global $pagelayer; // Check if the installed version is outdated pagelayer_update_check(); // Set the array $pagelayer = new PageLayer(); if(empty($pagelayer->BRAND_TEXT)){ $pagelayer->BRAND_TEXT = 'Pagelayer'; } if(empty($pagelayer->LOGO)){ $pagelayer->LOGO = PAGELAYER_URL.'/images/pagelayer-logo-40.png'; } // Is there any ACTION set ? $pagelayer->action = pagelayer_optreq('pagelayer-action'); $tablet_breakpoint = get_option('pagelayer_tablet_breakpoint'); $mobile_breakpoint = get_option('pagelayer_mobile_breakpoint'); // Load settings $pagelayer->settings['post_types'] = empty(get_option('pl_support_ept')) ? ['post', 'page'] : get_option('pl_support_ept'); $pagelayer->settings['enable_giver'] = get_option('pagelayer_enable_giver'); $pagelayer->settings['max_width'] = (int) (empty(get_option('pagelayer_content_width')) ? 1170 : get_option('pagelayer_content_width')); $pagelayer->settings['tablet_breakpoint'] = (int) (empty($tablet_breakpoint) ? 780 : $tablet_breakpoint); $pagelayer->settings['mobile_breakpoint'] = (int) (empty($mobile_breakpoint) ? 360 : $mobile_breakpoint); $pagelayer->settings['sidebar'] = get_option('pagelayer_sidebar'); $pagelayer->settings['body_font'] = get_option('pagelayer_body_font'); $pagelayer->settings['color'] = get_option('pagelayer_color'); // Any custom types $pagelayer->settings['post_types'] = apply_filters('pagelayer_supported_post_type', $pagelayer->settings['post_types']); // Load the language load_plugin_textdomain('pagelayer', false, PAGELAYER_SLUG.'/languages/'); // Load our array for builder pagelayer_builder_array(); // Its premium if(!defined('PAGELAYER_PREMIUM')){ // Show the promo pagelayer_maybe_promo([ 'after' => 1,// In days 'interval' => 30,// In days 'pro_url' => PAGELAYER_PRO_PRICE_URL, 'rating' => 'https://wordpress.org/plugins/pagelayer/#reviews', 'twitter' => 'https://twitter.com/pagelayer?status='.rawurlencode('I love #Pagelayer Site Builder by @pagelayer team for my #WordPress site - '.home_url()), 'facebook' => 'https://www.facebook.com/pagelayer', 'website' => PAGELAYER_WWW_URL, 'image' => PAGELAYER_URL.'/images/pagelayer-logo-256.png' ]); } // Are we to disable the getting started promo if(current_user_can('activate_plugins') && isset($_GET['pagelayer-getting-started']) && (int)$_GET['pagelayer-getting-started'] == 0){ check_ajax_referer('pagelayer_getting_started_nonce', 'pagelayer_nonce'); update_option('pagelayer_getting_started', time()); die('DONE'); } // Show the getting started video option $seen = get_option('pagelayer_getting_started'); if(empty($seen) && !empty($_GET['page']) && $_GET['page'] != 'pagelayer_getting_started'){ add_action('admin_notices', 'pagelayer_getting_started_notice'); } // Are we to disable the changelog notice if(current_user_can('activate_plugins') && isset($_GET['pagelayer-changelog-notice']) && (int)$_GET['pagelayer-changelog-notice'] == 0){ check_ajax_referer('pagelayer_changelog_nonce', 'pagelayer_nonce'); update_option('pagelayer_changelog_notice', 0); die('DONE'); } // Show the changelog notice $changelog = get_option('pagelayer_changelog_notice'); if(!empty($changelog)){ add_action('admin_notices', 'pagelayer_show_changelog_notice'); } include_once(PAGELAYER_DIR.'/main/customizer.php'); if(class_exists('WooCommerce')){ include_once(PAGELAYER_DIR.'/main/woocommerce.php'); } } // This adds the left menu in WordPress Admin page add_action('admin_menu', 'pagelayer_admin_menu', 5); // Shows the admin menu of Pagelayer function pagelayer_admin_menu() { global $wp_version, $pagelayer; $capability = 'activate_plugins';// TODO : Capability for accessing this page // Add the menu page add_menu_page(__('Pagelayer Editor'), __('Pagelayer'), $capability, 'pagelayer', 'pagelayer_page_handler', PAGELAYER_URL.'/images/pagelayer-logo-19.png'); // Settings Page add_submenu_page('pagelayer', __('Pagelayer Editor'), __('Settings'), $capability, 'pagelayer', 'pagelayer_page_handler'); // Meta Settings Page add_submenu_page('admin.php', __('Meta Settings'), __('Meta Settings'), 'edit_posts', 'pagelayer_meta_setting', 'pagelayer_meta_handler'); // UI Settings add_submenu_page('pagelayer', __('Website Settings'), __('Website Settings'), $capability, 'pagelayer_website_settings', 'pagelayer_website_page'); // Add new template add_submenu_page('pagelayer', __('Theme Templates'), __('Theme Templates'), $capability, 'edit.php?post_type=pagelayer-template'); // Add new template Link //add_submenu_page('pagelayer', __('Add New Template'), __('Add New Template'), $capability, 'edit.php?post_type=pagelayer-template#new'); // Add new template add_submenu_page('pagelayer', __('Add New Template'), __('Add New Template'), $capability, 'pagelayer_template_wizard', 'pagelayer_builder_template_wizard'); // Export Feature if(defined('PAGELAYER_PREMIUM')){ // Add new template add_submenu_page('pagelayer', __('Custom Fonts'), __('Custom Fonts'), $capability, 'edit.php?post_type='.PAGELAYER_FONT_POST_TYPE); // Export Theme add_submenu_page('pagelayer', __('Export Content into a Theme'), __('Export Theme'), $capability, 'pagelayer_template_export', 'pagelayer_builder_export'); // Import Theme add_submenu_page('pagelayer', __('Import content from a Theme'), __('Import Theme'), $capability, 'pagelayer_import', 'pagelayer_import_page'); } // Getting Started add_submenu_page('pagelayer', __('Getting Started'), __('Getting Started'), $capability, 'pagelayer_getting_started', 'pagelayer_getting_started'); // Its Free if(!defined('PAGELAYER_PREMIUM')){ // Go Pro link add_submenu_page('pagelayer', __('Pagelayer Go Pro'), __('Go Pro'), $capability, PAGELAYER_PRO_PRICE_URL); }else{ // License Page add_submenu_page('pagelayer', __('Pagelayer License'), __('License'), $capability, 'pagelayer_license', 'pagelayer_license_page'); } // Replace Media add_submenu_page('admin.php', __('Replace media', 'pagelayer'), __('Replace media', 'pagelayer'), 'upload_files', 'pagelayer_replace_media', 'pagelayer_replace_media'); } // This function will handle the Settings Pages in Pagelayer function pagelayer_website_page(){ global $wp_version, $pagelayer; include_once(PAGELAYER_DIR.'/main/website.php'); pagelayer_website_settings(); } // Getting Started function pagelayer_getting_started(){ global $wp_version, $pagelayer; update_option('pagelayer_getting_started', time()); include_once(PAGELAYER_DIR.'/main/getting_started.php'); } // This function will handle the post_metas Pages in Pagelayer function pagelayer_meta_handler(){ global $wp_version, $pagelayer; include_once(PAGELAYER_DIR.'/main/post_metas.php'); pagelayer_meta_page(); } // Pagelayer post meta page view handler add_action('admin_enqueue_scripts', 'pagelayer_post_meta_page'); function pagelayer_post_meta_page() { // Set Current screen $screen = get_current_screen(); $meta_id = 'admin_page_pagelayer_meta_setting'; if( !is_admin() || trim($screen->id) != $meta_id ) { return; } if(!isset($_REQUEST['post'])){ return; } // Remove all the notice hooks remove_all_actions('admin_notices'); remove_all_actions('all_admin_notices'); $_REQUEST['post'] = (int) $_REQUEST['post']; $post = get_post( $_REQUEST['post'] ); // Enqueue Scripts wp_enqueue_script( 'post' ); // Is support media $thumbnail_support = current_theme_supports( 'post-thumbnails', $post->post_type ) && post_type_supports( $post->post_type, 'thumbnail' ); if ( ! $thumbnail_support && 'attachment' === $post->post_type && $post->post_mime_type ) { if ( wp_attachment_is( 'audio', $post ) ) { $thumbnail_support = post_type_supports( 'attachment:audio', 'thumbnail' ) || current_theme_supports( 'post-thumbnails', 'attachment:audio' ); } elseif ( wp_attachment_is( 'video', $post ) ) { $thumbnail_support = post_type_supports( 'attachment:video', 'thumbnail' ) || current_theme_supports( 'post-thumbnails', 'attachment:video' ); } } if ( $thumbnail_support ) { add_thickbox(); wp_enqueue_media( array( 'post' => $post->ID ) ); } $meta_box_url = admin_url( 'post.php' ); $meta_box_url = add_query_arg( array( 'post' => $post->ID, 'action' => 'editpost', ), $meta_box_url ); echo ' '; } // Update post meta via gutenberg handler add_filter('sanitize_post_meta_pagelayer_header_code', 'pagelayer_sanitize_postmeta', 10, 2); add_filter('sanitize_post_meta_pagelayer_body_open_code', 'pagelayer_sanitize_postmeta', 10, 2); add_filter('sanitize_post_meta_pagelayer_footer_code', 'pagelayer_sanitize_postmeta', 10, 2); function pagelayer_sanitize_postmeta( $meta_value, $meta_key ) { // Sanitize Header, body and footer code if( in_array( $meta_key, array( 'pagelayer_header_code', 'pagelayer_body_open_code', 'pagelayer_footer_code' ) ) && !pagelayer_user_can_add_js_content() ){ return sanitize_textarea_field($meta_value); } return $meta_value; } // Pre post save handler add_filter( 'content_save_pre', 'pagelayer_content_save_pre' ); function pagelayer_content_save_pre($content){ if(!pagelayer_user_can_add_js_content() && strpos($content, '[') !== false){ $content = pagelayer_sanitize_shortcode_atts($content); } if(pagelayer_user_can_add_js_content() || !pagelayer_has_blocks($content)){ return $content; } $blocks = parse_blocks( wp_unslash($content) ); $output = ''; foreach ( $blocks as $block ) { $block_name = $block['blockName']; // Is pagelayer block if ( is_string( $block_name ) && 0 === strpos( $block_name, 'pagelayer/' ) ) { $_block = pagelayer_sanitize_blocks_save_pre($block); $output .= serialize_block($_block); continue; } $output .= serialize_block($block); } return wp_slash($output); } // On post save handler add_action('save_post', 'pagelayer_save_post', 10, 3); function pagelayer_save_post( $post_id, $post, $update ) { if( !isset($_REQUEST['is_pagelayer_editor']) || !pagelayer_user_can_edit($post_id)){ return; } // Save Header, body and footer code $header_code = !empty($_REQUEST['pagelayer_header_code']) ? $_REQUEST['pagelayer_header_code'] : '' ; $body_code = !empty($_REQUEST['pagelayer_body_open_code']) ? $_REQUEST['pagelayer_body_open_code'] : '' ; $footer_code = !empty($_REQUEST['pagelayer_footer_code']) ? $_REQUEST['pagelayer_footer_code'] : '' ; // Set Custom header, body and footer code if(!empty($header_code)){ update_post_meta($post_id, 'pagelayer_header_code', $header_code); }else{ delete_post_meta($post_id, 'pagelayer_header_code'); } if(!empty($body_code)){ update_post_meta($post_id, 'pagelayer_body_open_code', $body_code); }else{ delete_post_meta($post_id, 'pagelayer_body_open_code'); } if(!empty($footer_code)){ update_post_meta($post_id, 'pagelayer_footer_code', $footer_code); }else{ delete_post_meta($post_id, 'pagelayer_footer_code'); } } // This function will handle the Settings Pages in Pagelayer function pagelayer_page_handler(){ global $wp_version, $pagelayer; include_once(PAGELAYER_DIR.'/main/settings.php'); pagelayer_settings_page(); } // This function will handle the Settings Pages in Pagelayer function pagelayer_license_page(){ global $wp_version, $pagelayer; include_once(PAGELAYER_PRO_DIR.'/main/license.php'); pagelayer_license(); } // Import Pagelayer Templates function pagelayer_import_page(){ global $wp_version, $pagelayer; include_once(PAGELAYER_DIR.'/main/import.php'); pagelayer_import(); } // Load the Live Body add_action('template_redirect', 'pagelayer_load_live_body', 4); function pagelayer_load_live_body(){ global $post; // If its not live editing then stop if(!pagelayer_is_live()){ return; } // If its the iFRAME then return if(pagelayer_is_live_iframe()){ return; } // Are you allowed to edit ? if(!pagelayer_user_can_edit($post->ID)){ return; } // Load the editor live body include_once(PAGELAYER_DIR.'/main/live-body.php'); pagelayer_live_body(); } // Add the JS and CSS for Posts and Pages when being viewed ONLY if there is our content called add_action('template_redirect', 'pagelayer_enqueue_frontend', 5); function pagelayer_enqueue_frontend($force = false){ global $post, $pagelayer; if(!empty($pagelayer->cache['enqueue_frontend'])){ return; } if(empty($post->ID) && empty($force)){ return; } $is_pagelayer = false; $is_audio = false; // This IF is for Archives mainly as $post->ID is only the first post in the archive // and we need to make sure that other posts are pagelayer or not if(!empty($GLOBALS['wp_query']->posts) && is_array($GLOBALS['wp_query']->posts)){ foreach($GLOBALS['wp_query']->posts as $v){ if(get_post_meta($v->ID , 'pagelayer-data')){ $is_pagelayer = true; } if(preg_match('/(\[pl_audio|pagelayer\/pl_audio)/is', $v->post_content)){ $is_audio = true; } } } // Enqueue the FRONTEND CSS if((!empty($post->ID) && get_post_meta($post->ID , 'pagelayer-data')) || pagelayer_has_blocks() || $is_pagelayer || $force){ // We dont need the auto
and
as they interfere with us
remove_filter('the_content', 'wpautop');
// No need to add curly codes to the content
remove_filter('the_content', 'wptexturize');
pagelayer_load_shortcodes();
// Load global colors and fonts
pagelayer_load_global_palette();
$pagelayer->cache['enqueue_frontend'] = true;
// Load the global styles
add_action('wp_head', 'pagelayer_global_js', 2);
$premium_js = apply_filters('pagelayer_add_give_js', '');
$premium_css = apply_filters('pagelayer_add_give_css', '');
// Load this For audio widget
do_action('pagelayer_load_audio_widget', $is_audio);
if(pagelayer_enable_giver()){
$write = '';
// Dev mode - Dynamic JS and CSS
if(defined('PAGELAYER_DEV') && !empty(PAGELAYER_DEV)){
$write = '&write=1';
}
// Enqueue our Editor's Frontend JS
wp_register_script('pagelayer-frontend', PAGELAYER_JS.'/givejs.php?give=pagelayer-frontend.js,nivo-lightbox.min.js,wow.min.js,jquery-numerator.js,simpleParallax.min.js,owl.carousel.min.js'.$premium_js.$write, array('jquery'), PAGELAYER_VERSION);
// Get list of enabled icons
$icons_css = '';
$icons = pagelayer_enabled_icons();
foreach($icons as $icon){
$icons_css .= ','.$icon.'.min.css';
}
wp_register_style('pagelayer-frontend', PAGELAYER_CSS.'/givecss.php?give=pagelayer-frontend.css,nivo-lightbox.css,animate.min.css,owl.carousel.min.css,owl.theme.default.min.css'.$icons_css.$premium_css.$write, array(), PAGELAYER_VERSION);
// Static Files
}else{
wp_register_script('pagelayer-frontend', (empty($premium_js) ? PAGELAYER_JS : PAGELAYER_PRO_JS).'/combined.js', array('jquery'), PAGELAYER_VERSION);
wp_register_style('pagelayer-frontend', PAGELAYER_CSS.'/combined'.(!empty($premium_css) ? '.premium' : '').'.css', array(), PAGELAYER_VERSION);
}
wp_enqueue_script('pagelayer-frontend');
wp_enqueue_style('pagelayer-frontend');
// Load the global styles
add_action('wp_head', 'pagelayer_global_styles', 5);
add_filter('body_class', 'pagelayer_body_class', 10, 2);
// Load the global styles for gutenberg
if(pagelayer_is_gutenberg_editor()){
add_action('admin_print_scripts', 'pagelayer_global_styles', 5);
}
// Load custom widgets
do_action('pagelayer_custom_frontend_enqueue');
}
}
// Load the google and custom fonts
add_action('wp_footer', 'pagelayer_enqueue_fonts', 5);
function pagelayer_enqueue_fonts($suffix = '-header'){
global $pagelayer;
if(empty($pagelayer->cache['enqueue_frontend'])){
return;
}
$url = [];
$cst = [];
foreach($pagelayer->css as $k => $set){
$font_family = pagelayer_isset($set, 'font-family');
if(empty($font_family)){
$key = str_replace(['_mobile', '_tablet'], '', $k);
$font_family = isset($pagelayer->css[$key]['font-family'])? $pagelayer->css[$key]['font-family']: '';
}
// Fetch body font if given
if(!empty($font_family)){
pagelayer_load_font_family($font_family, pagelayer_isset($set, 'font-weight'), pagelayer_isset($set, 'font-style'));
}
}
foreach($pagelayer->runtime_fonts as $font => $weights){
if(in_array($font, $pagelayer->system_fonts)){
continue;
}
if(strpos($font, '_plf')){
if(!in_array($font, $pagelayer->fonts_sent)){
$pagelayer->fonts_sent[] = $font;
$cst[] = preg_replace('/_plf$/is', '', $font);
}
}else{
$v = $font.':'.implode(',', $weights);
if(!in_array($v, $pagelayer->fonts_sent)){
$url[] = $v;
$pagelayer->fonts_sent[] = $v;
}
}
}
// If no fonts are to be set, then we dont set
if(!empty($url)){
$fonts_url = 'https://fonts.googleapis.com/css?family='.rawurlencode(implode('|', $url));
$fonts_url = apply_filters('pagelayer_google_fonts_url', $fonts_url);
wp_register_style('pagelayer-google-font'.$suffix, $fonts_url, array(), PAGELAYER_VERSION);
wp_enqueue_style('pagelayer-google-font'.$suffix);
echo '';
}
if(empty($cst)){
return;
}
$args = [
'post_type' => PAGELAYER_FONT_POST_TYPE,
'status' => 'publish',
'post_name__in' => $cst
];
//var_dump($args);
$query = get_posts($args);
//var_dump($query);
if(empty($query)){
return;
}
foreach($query as $font){
$meta_box_value = get_post_meta($font->ID, 'pagelayer_font_link', true);
if(empty($meta_box_value)){
continue;
}
echo '';
}
}
// Load any header we have
function pagelayer_global_js(){
global $pagelayer;
$pagelayer_recaptch_lang = get_option('pagelayer_google_captcha_lang');
$pagelayer_recaptch_version = get_option('pagelayer_recaptcha_version', '');
echo '';
}
// We need to handle global styles
function pagelayer_load_global_css(){
global $pagelayer;
// Load CSS settings
foreach($pagelayer->css_settings as $k => $params){
$tmp_desk = '';
foreach($pagelayer->screens as $sk => $sv){
$suffix = (!empty($sv) ? '_'.$sv : '');
$setting = empty($params['key']) ? 'pagelayer_'.$k.'_css' : $params['key'];
$tmp = get_option($setting.$suffix);
if($sk == 'desktop'){
$tmp_desk = $tmp;
}
$tmp = pagelayer_sanitize_global_style($tmp, $tmp_desk, $sk);
if(empty($tmp)){
continue;
}
$pagelayer->css[$k.$suffix] = $tmp;
}
}
// Backward compat for colors
if(!empty($pagelayer->settings['color']['background']) && empty($pagelayer->css['body']['background-color'])){
$pagelayer->css['body']['background-color'] = $pagelayer->settings['color']['background'];
}
if(!empty($pagelayer->settings['color']['text']) && empty($pagelayer->css['body']['color'])){
$pagelayer->css['body']['color'] = $pagelayer->settings['color']['text'];
}
// Link Color
if(!empty($pagelayer->settings['color']['link']) && empty($pagelayer->css['a']['color'])){
$pagelayer->css['a']['color'] = $pagelayer->settings['color']['link'];
}
// Link Hover Color
if(!empty($pagelayer->settings['color']['link-hover']) && empty($pagelayer->css['a-hover']['color'])){
$pagelayer->css['a-hover']['color'] = $pagelayer->settings['color']['link-hover'];
}
// Headings Color
if(!empty($pagelayer->settings['color']['heading'])){
$htmp = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
foreach($htmp as $k => $v){
if(empty($pagelayer->css[$v]['color'])){
$pagelayer->css[$v]['color'] = $pagelayer->settings['color']['heading'];
}
}
}
// Backward compat for body font
if(!empty($pagelayer->settings['body_font'])){
$pagelayer->settings['body']['font-family'] = $pagelayer->settings['body_font'];
}
}
// We need to handle global styles
function pagelayer_global_styles(){
global $pagelayer, $post;
// Load css from settings
pagelayer_load_global_css();
$styles = '
';
// Lets just build a temporary list of fonts so that we can add prefetch !
pagelayer_enqueue_fonts();
if(!empty($pagelayer->runtime_fonts)){
echo '
';
}
echo $styles;
}
function pagelayer_body_class($classes, $class){
$classes[] = 'pagelayer-body';
return $classes;
}
// Load the live editor if needed
// Changed this hook wp_enqueue_scripts to Template_include to make block theme compatibility
add_action('template_include', 'pagelayer_load_live');
function pagelayer_load_live($template){
global $post, $pagelayer;
$pagelayer->load_live_errors = array();
// If its not live editing then stop
if(!pagelayer_is_live_iframe($pagelayer->load_live_errors)){
// Is it the live mode then lets throw an error ?
if(pagelayer_optreq('pagelayer-iframe')){
add_action('wp_head', 'pagelayer_load_live_errors', 999);
}
return $template;
}
// Are you allowed to edit ?
if(!pagelayer_user_can_edit($post->ID)){
return $template;
}
// Load the editor class
include_once(PAGELAYER_DIR.'/main/live.php');
// Call the constructor
$pl_editor = new PageLayer_LiveEditor();
return $template;
}
// Show the live errors if any
function pagelayer_load_live_errors(){
global $post, $pagelayer;
// Any errors ?
if(empty($pagelayer->load_live_errors)){
return;
}
echo '';
}
// If we are doing ajax and its a pagelayer ajax
if(wp_doing_ajax()){
include_once(PAGELAYER_DIR.'/main/ajax.php');
}
// Show the backend editor options
add_action('edit_form_after_title', 'pagelayer_after_title', 10);
function pagelayer_after_title(){
global $post;
// Get the current screen
$current_screen = get_current_screen();
// For gutenberg
if(method_exists($current_screen, 'is_block_editor') && $current_screen->is_block_editor()){
// Add the code in the footer
add_action('admin_footer', 'pagelayer_gutenberg_after_title');
return;
}
// Is pagelayer supposed to edit this ?
if(!pagelayer_user_can_edit($post)){
return;
}
$link = pagelayer_shortlink($post->ID).'&pagelayer-live=1';
echo '