base ) { $opt = get_option("ampforwp_option_panel_view_type"); wp_localize_script( 'ampforwp_admin_js', 'amp_option_panel_view', $opt); }else{ $opt = get_option("ampforwp_option_panel_view_type"); if($opt==1 || $opt==2){ $opt="3".intval($opt); }else{ $opt = "31"; } wp_localize_script( 'ampforwp_admin_js', 'amp_option_panel_view', "$opt"); } wp_localize_script( 'ampforwp_admin_js', 'amp_fields', $amp_fields ); $redux_data = apply_filters("ampforwp_custom_localize_data", $redux_data); wp_localize_script( 'ampforwp_admin_js', 'redux_data', $redux_data ); wp_localize_script( 'ampforwp_admin_js', 'ampforwp_nonce', wp_create_nonce('ampforwp-verify-request') ); wp_enqueue_script( 'wp-color-picker' ); wp_enqueue_script( 'ampforwp_admin_js' ); } // 96. ampforwp_is_front_page() ampforwp_is_home() and ampforwp_is_blog is created function ampforwp_is_front_page(){ global $redux_builder_amp; $front_page = false; // Reading settings me frontpage set $get_front_page_reading_settings = get_option('page_on_front'); // Homepage support on $get_amp_homepage_settings = ampforwp_get_setting('ampforwp-homepage-on-off-support'); // AMP Custom front page from AMP panel $get_custom_frontpage_settings = ampforwp_get_setting('amp-frontpage-select-option'); // Frontpage id should be assigned if ( ampforwp_get_setting('amp-frontpage-select-option-pages') ) { $get_amp_custom_frontpage_id = $redux_builder_amp['amp-frontpage-select-option-pages']; } // Passing Frontpage id true for polylang static pages if ( (class_exists('polylang') || class_exists('Polylang_Pro')) && function_exists('poly_archive_url') ) { if( !ampforwp_get_setting('amp-frontpage-select-option-pages') && $get_custom_frontpage_settings && 'page' === get_option( 'show_on_front' )){ $get_amp_custom_frontpage_id = true; } } // TRUE: When we have "Your latest posts" in reading settings and custom frontpage in amp if ( 'posts' == get_option( 'show_on_front') && is_home() && $get_amp_homepage_settings && $get_custom_frontpage_settings) $front_page = true; // TRUE: When we have " A static page" in reading settings and custom frontpage in amp if ( 'page' == get_option( 'show_on_front') && (is_home() || is_front_page()) && $get_front_page_reading_settings && $get_amp_homepage_settings && $get_custom_frontpage_settings && !empty($get_amp_custom_frontpage_id)) { $front_page = true; $current_page = get_queried_object(); if ( $current_page ) { $current_page = $current_page->ID; } if ( get_option( 'page_for_posts') == $current_page ) { $front_page = false ; } } $front_page = apply_filters('ampforwp_is_front_page', $front_page); return $front_page; } function ampforwp_is_home(){ global $redux_builder_amp; $output = false; if ( ampforwp_is_front_page() == false && ampforwp_is_blog () == false && is_home() ) { $output = true; } return $output; } function ampforwp_is_blog(){ $get_blog_details = ""; $get_blog_details = ampforwp_get_blog_details(); return $get_blog_details ; } // Polylang frontpage function ampforwp_polylang_front_page() { include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); if( is_plugin_active( 'polylang/polylang.php' ) || is_plugin_active( 'polylang-pro/polylang.php' ) ){ global $polylang; $page_id = $polylang->curlang->page_on_front; $frontpage_id = get_option('page_on_front'); // is_front_page is not working here so had to do this way // Check current page id with translated page id if ( function_exists('pll_get_post') && $page_id == pll_get_post($frontpage_id) && ! is_page() && ! is_single() && ! is_archive() && ! is_search() && ! ampforwp_is_blog() ){ return true; } } return false; } // Get The ID for AMP #2867 function ampforwp_get_the_ID($post_id=''){ $post_id = get_the_ID(); if(ampforwp_is_front_page()){ $post_id = ampforwp_get_frontpage_id(); } if(ampforwp_is_blog()){ $post_id = ampforwp_get_blog_details('id'); } return $post_id; } // Backward Compatibility function ampforwp_correct_frontpage() { return ampforwp_get_frontpage_id(); } //Common function to get frontpageID function ampforwp_get_frontpage_id() { $post_id = ''; if ( ampforwp_is_front_page() ) { $post_id = ampforwp_get_setting('amp-frontpage-select-option-pages'); } $post_id = apply_filters('ampforwp_modify_frontpage_id', $post_id); return $post_id; } // 27. Clean the Defer issue // TODO : Get back to this issue. #407 function ampforwp_the_content_filter_full( $content_buffer ) { if ((!is_plugin_active('amp/amp.php') && function_exists( 'ampforwp_is_amp_endpoint' ) && ampforwp_is_amp_endpoint() ) || (function_exists('amp_activate') && function_exists( 'is_amp_endpoint' ) && is_amp_endpoint() )) { $content_buffer = preg_replace("/' defer='defer/", "", $content_buffer); $content_buffer = preg_replace("/' defer onload='/", "", $content_buffer); $content_buffer = preg_replace("/' defer /", "", $content_buffer); $content_buffer = preg_replace("/onclick=[^>]*/", "", $content_buffer); $content_buffer = preg_replace("/<\\/?thrive_headline(.|\\s)*?>/",'',$content_buffer); // Remove Extra styling added by other Themes/ Plugins preg_match('/((.*?)<\/style>)/', $content_buffer, $m1); if($m1){ $content_buffer = preg_replace('/((.*?)<\/style>)/','',$content_buffer); } preg_match('/((.*?)<\/style>)(\/\*)/', $content_buffer, $m2); if($m2){ $content_buffer = preg_replace('/((.*?)<\/style>)(\/\*)/','$4',$content_buffer); } $content_buffer = preg_replace("/<\\/?g(.|\\s)*?>/",'',$content_buffer); $content_buffer = preg_replace('/(<[^>]+) spellcheck="false"/', '$1', $content_buffer); $content_buffer = preg_replace('/(<[^>]+) spellcheck="true"/', '$1', $content_buffer); $content_buffer = preg_replace("/about:blank/", "#", $content_buffer); $content_buffer = preg_replace("/
$1 ".$nonampCss.$galleryCss.""; $returnData = preg_replace($re, $subst, $returnData); $returnData = preg_replace( '/<\/amp-youtube>/', '', $returnData); $returnData = preg_replace_callback( '/<\/amp-iframe>/', function($matches){ return ''; }, $returnData); $returnData = preg_replace_callback('/(.*?)<\/amp-carousel>/s', 'ampforwp_non_amp_gallery', $returnData ); $returnData = preg_replace('/on="tap(.*?).goToSlide(.*?)"/', 'onclick="currentDiv$2"', $returnData); $returnData = preg_replace('/', $returnData); $returnData = str_replace('', ''.$galleryJs, $returnData); break; } return $returnData; } } // wp_update_nav_menu #3052 add_action('wp_update_nav_menu', 'ampforwp_wp_update_nav_menu', 10 , 1 ); if ( ! function_exists('ampforwp_wp_update_nav_menu') ) { function ampforwp_wp_update_nav_menu( $menu_id ) { if ( false != get_transient('ampforwp_header_menu') ) { delete_transient('ampforwp_header_menu'); } if ( false != get_transient('ampforwp_footer_menu') ) { delete_transient('ampforwp_footer_menu'); } } } // Delete Menu Transients on Saving AMP Settings #3052 if ( ! function_exists('ampforwp_menu_transient_on_save') ){ function ampforwp_menu_transient_on_save($redux_builder_amp, $this_transients_changed_values) { if ( isset($this_transients_changed_values['amp-design-selector']) ) { if ( false != get_transient('ampforwp_header_menu') ) { delete_transient('ampforwp_header_menu'); } if ( false != get_transient('ampforwp_footer_menu') ) { delete_transient('ampforwp_footer_menu'); } } } } add_action("redux/options/redux_builder_amp/saved",'ampforwp_menu_transient_on_save', 10, 2); // Protocol Remover if ( ! function_exists('ampforwp_remove_protocol') ) { function ampforwp_remove_protocol($url){ $url = preg_replace('#^https?://#', '//', $url); return $url; } } // #3009 if ( ! function_exists('ampforwp_sanitize_i_amphtml') ) { function ampforwp_sanitize_i_amphtml($data){ if(empty($data)){ return $data; } $data = preg_replace_callback('/.i-amphtml-(.*?){(.*?)}/s',function($matches){ if(!empty($matched)){ return ''; } }, $data); return $data; } } function checkAMPforPageBuilderStatus($postId){ global $post; $postId = (is_object($post)? $post->ID: ''); $response =false; if( ampforwp_is_front_page() ){ $postId = ampforwp_get_frontpage_id(); } if ( empty( $postId ) ) { $response = false; }else{ $amp_builder = get_post_field('amp-page-builder',$postId); $amp_pd_data = json_decode($amp_builder); $ampforwp_pagebuilder_enable = get_post_meta($postId,'ampforwp_page_builder_enable', true); if( $ampforwp_pagebuilder_enable=='yes' && true == ampforwp_get_setting('ampforwp-pagebuilder') && ( function_exists('amppb_post_content') && !empty($amp_pd_data->rows))){ $response = true; }else{ $response = false; } } $response = apply_filters( 'ampforwp_pagebuilder_status_modify', $response, $postId ); return $response; } // Gallery Code #3296 function ampforwp_new_gallery_images($images_markup, $image, $markup_arr){ add_action('amp_post_template_css', 'ampforwp_additional_gallery_style'); add_filter('amp_post_template_data','ampforwp_carousel_bind_script'); add_action('amp_post_template_css', 'ampforwp_additional_style_carousel_caption'); return $images_markup; } if( ! function_exists( 'ampforwp_additional_gallery_style' ) ){ function ampforwp_additional_gallery_style(){ global $redux_builder_amp,$carousel_markup_all; $design_type = ''; $design_type = $redux_builder_amp['ampforwp-gallery-design-type']; if(isset($design_type) && $design_type!==''){ echo $carousel_markup_all[$design_type]['gallery_css']; } } } // amp-bind for carousel with captions function ampforwp_carousel_bind_script($data){ if( 1 == ampforwp_get_setting('ampforwp-gallery-design-type') || 2 == ampforwp_get_setting('ampforwp-gallery-design-type') ){ if ( empty( $data['amp_component_scripts']['amp-bind'] ) ) { $data['amp_component_scripts']['amp-bind'] = 'https://cdn.ampproject.org/v0/amp-bind-0.1.js'; } } if( 3 == ampforwp_get_setting('ampforwp-gallery-design-type') || true == ampforwp_get_setting('ampforwp-gallery-lightbox') ){ if ( empty( $data['amp_component_scripts']['amp-image-lightbox'] ) ) { $data['amp_component_scripts']['amp-image-lightbox'] = 'https://cdn.ampproject.org/v0/amp-image-lightbox-0.1.js'; } } return $data; } function ampforwp_new_thumbnail_images($amp_images, $uniqueid, $markup_arr){ if(!isset($markup_arr['carousel_with_thumbnail_html'])){return '';} $amp_thumb_image_buttons = array(); foreach ($amp_images as $key => $value) { $returnHtml = $markup_arr['carousel_with_thumbnail_html']; $returnHtml = str_replace('{{thumbnail}}', $value , $returnHtml); $returnHtml = str_replace('{{unique_id}}', $uniqueid , $returnHtml); $returnHtml = str_replace('{{unique_index}}', $key , $returnHtml); $amp_thumb_image_buttons[$key] = $returnHtml; } return $amp_thumb_image_buttons; } // Gallery Styling if( ! function_exists( 'ampforwp_additional_style_carousel_caption' ) ){ function ampforwp_additional_style_carousel_caption(){ ?> .collapsible-captions {--caption-height: 32px; --image-height: 100%; --caption-padding:1rem; --button-size: 28px; --caption-color: #f5f5f5;; --caption-bg-color: #111;} .collapsible-captions * { -webkit-tap-highlight-color: rgba(255, 255, 255, 0); box-sizing: border-box; } .collapsible-captions .amp-carousel-container {position: relative; width: 100%;} .collapsible-captions amp-img img {object-fit: contain; } .collapsible-captions figure { margin: 0; padding: 0; } .collapsible-captions figcaption { position: absolute; bottom: 0;width: 100%; max-height: var(--caption-height);margin-bottom:0; line-height: var(--caption-height); padding: 0 var(--button-size) 0 5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; transition: max-height 200ms cubic-bezier(0.4, 0, 0.2, 1); z-index: 1000; color: var(--caption-color); background: rgba(0, 0, 0, 0.6); } .collapsible-captions figcaption.expanded { line-height: inherit; white-space: normal; text-overflow: auto; max-height: 100px; overflow: auto; } .collapsible-captions figcaption:focus { outline: none; border: none; } .collapsible-captions figcaption span { display: block; position: absolute; top: calc((var(--caption-height) - var(--button-size)) / 2); right: 2px; width: var(--button-size); height: var(--button-size); line-height: var(--button-size); text-align: center; font-size: 12px; color: inherit; cursor: pointer; } figcaption{ margin-bottom: 20px; } roles; $hasrole = array_intersect( $currentuserrole, $amp_roles ); if( empty($hasrole)){ $user_role = false; } $user_role = apply_filters('ampforwp_modify_user_access_role', $user_role, $currentUser, $amp_roles, $hasrole ); return $user_role; } if(!function_exists('ampforwp_sassy_share_icons')){ function ampforwp_sassy_share_icons($ampforwp_the_content) { if(function_exists('heateor_sss_run')){ global $heateor_sss;global $post; $share_counts = false; $sassy_options = $heateor_sss->options; $post_url = get_the_permalink($post); if(isset($sassy_options['horizontal_counts'])){ $post_id = ampforwp_get_the_ID(); if ( $post_id == 'custom' ) { $share_counts = get_option( 'heateor_sss_custom_url_shares' ) ; } elseif ( $post_url == home_url() ) { $share_counts = get_option( 'heateor_sss_homepage_shares' ); } elseif ( $post_id > 0 ) { $share_counts = get_post_meta( $post_id, '_heateor_sss_shares_meta', true ); } $total_share = 0; if(isset($sassy_options['horizontal_re_providers'])){ $share_icons = $sassy_options['horizontal_re_providers']; foreach($share_icons as $i){ if(isset($share_counts[$i])){ $total_share += round($share_counts[$i]); } } } $_append = ''; preg_match_all('/
<\/div>
(.*)
<\/div><\/div>
<\/div>/', $ampforwp_the_content, $matches); $_actual = $matches[0]; if(isset($matches[1][0])){ $_replace = '
'.$_append.'
'; $ampforwp_the_content = str_replace($_actual, $_replace, $ampforwp_the_content); } } } return $ampforwp_the_content; } } // Notice for Dev Mode function ampforwp_dev_mode_notice(){ global $redux_builder_amp; $message = ''; if(isset($redux_builder_amp['ampforwp-development-mode']) && $redux_builder_amp['ampforwp-development-mode']) { $message = ' Please turn off Development mode, when you are done.';?>
'. esc_html__('AMP Dev mode is Enabled!', 'accelerated-mobile-pages').''. esc_html__($message, 'accelerated-mobile-pages'); ?>

%s

'), esc_html__('Incorrect SEO plugin has been selected in AMPforWP SEO Settings, Please select '.esc_html($seo).' from SEO Settings.','accelerated-mobile-pages')); } if('' != ampforwp_get_setting('ampforwp-seo-selection')){ return; } if(!empty($seo)){ echo sprintf(('

%s

'), esc_html__('The configuration of AMPforWP and '.esc_html($seo).' plugin is seems incorrect. Please go to AMPforWP plugin settings -> SEO -> SEO Plugin Integration and select '.esc_html($seo).' plugin from the drop down.','accelerated-mobile-pages')); } } add_action('wp_ajax_ampforwp_subscribe_newsletter','ampforwp_subscribe_for_newsletter'); add_action('wp_ajax_nopriv_ampforwp_subscribe_newsletter','ampforwp_subscribe_for_newsletter'); function ampforwp_subscribe_for_newsletter(){ $api_url = 'http://magazine3.company/wp-json/api/central/email/subscribe'; $api_params = array( 'name' => sanitize_text_field($_POST['name']), 'email'=> sanitize_text_field($_POST['email']), 'website'=> sanitize_text_field($_POST['website']), 'type'=> 'amp' ); $response = wp_remote_post( $api_url, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) ); $response = wp_remote_retrieve_body( $response ); echo $response; die; } function ampforwp_mobile_redirection_notice(){ if(false == ampforwp_get_setting('amp-mobile-redirection')){ return; } $plugin = $option = ''; if(function_exists('rocket_load_textdomain') && 0 == get_rocket_option( 'do_caching_mobile_files' )){ $plugin = 'WP Rocket'; $option = 'Separate cache files for mobile devices'; } if(function_exists('wp_super_cache_init_action')) { global $wp_cache_mobile_enabled; if(0 == $wp_cache_mobile_enabled){ $plugin = 'WP Super Cache'; $option = 'Mobile device support'; }else{ return; } } if(function_exists('litespeed_purge_single_post') && !LiteSpeed_Cache_Admin_Rules::get_instance()->get_rewrite_rule_mobile_agents()) { $plugin = 'LiteSpeed Cache'; $option = 'Cache Mobile'; } if(function_exists('wpfastestcache_activate') && 'on' != $GLOBALS["wp_fastest_cache_options"]->wpFastestCacheMobile) { $plugin = 'WP Fastest Cache'; $option = 'Mobile'; } if(!empty($plugin) && !empty($option)){ echo sprintf(('

%s %s

'), esc_html__('You need to enable the option of "'.esc_html($option).'" in '.esc_html($plugin).' plugin for mobile redirection to work properly in AMP','accelerated-mobile-pages'),esc_url('https://ampforwp.com/tutorials/article/how-to-redirect-all-mobile-visitors-to-amp/'),esc_html__('Click here for more info','accelerated-mobile-pages')); } } function ampforwp_category_base_remove_notice(){ if(true == ampforwp_get_setting('ampforwp-category-base-removel-link')){ return; } if(class_exists('WPSEO_Options') && method_exists('WPSEO_Options', 'get') && WPSEO_Options::get( 'stripcategorybase' ) == true ){ echo sprintf(('

%s %s%s%s

'), esc_html__('We have detected that you removed Category Base from Yoast SEO plugin but not from AMPforWP settings. Please','accelerated-mobile-pages'), esc_url('admin.php?page=amp_options&tab=17'), esc_html__('Click here','accelerated-mobile-pages'), esc_html__(' to set up to make sure AMP pages work properly on category pages or ','accelerated-mobile-pages'), esc_url('https://ampforwp.com/tutorials/article/how-to-remove-the-category-base-in-the-amp/'),esc_html__('Click here for the tutorial','accelerated-mobile-pages'),esc_html__('Click here for the tutorial','accelerated-mobile-pages')); } } // HIDE/SHOW TAG AND CATEGORY #4326 function ampforwp_get_taxonomy_meta($term_id,$type=''){ if($type=='' || $type=='data'){ $amp_taxonomy = get_term_meta( $term_id,'amp_taxonomy'); $amp_hide_tax = get_term_meta( $term_id,'amp_hide_tax'); $data = array('visible'=>$amp_taxonomy,'visible_status'=>$amp_hide_tax); return $data; }else if($type=='status'){ $amp_taxonomy = get_term_meta( $term_id,'amp_taxonomy'); if(isset($amp_taxonomy[0]) && $amp_taxonomy[0]=='hide'){ return false; }else{ return true; } }else if($type=='post_status'){ $term = wp_get_post_terms(ampforwp_get_the_ID(),array('category','post_tag')); foreach ($term as $key => $value) { $amp_taxonomy = get_term_meta( $value->term_id,'amp_taxonomy'); $amp_hide_tax = get_term_meta( $value->term_id,'amp_hide_tax'); if(isset($amp_taxonomy[0]) && $amp_taxonomy[0]=='hide' && $amp_hide_tax[0]=='hide-tax-post'){ return false; } } return true; } } function ampforwp_internal_feedback_notice(){ $install_date = get_option('ampforwp_plugin_info'); if (isset($install_date["activation_data"])) { $install_date = $install_date["activation_data"]; $install_date = date("m-d-Y", $install_date); } $activation_never = get_option("ampforwp_feedback_remove_notice"); if (strtotime($install_date) < strtotime('1 month ago') && $activation_never !='remove') {?> 't')); }else{ echo json_encode(array('status'=>'f')); } wp_die(); } add_action('wp_ajax_ampforwp_feedback_remove_notice', 'ampforwp_feedback_remove_notice');