post_type == 'post' ) { return; } // Redirection for Homepage and Archive Pages when Turned Off from options panel if ( ampforwp_is_amp_endpoint() ) { if(is_tax()){ $term_id = get_queried_object()->term_id; $term = get_term( $term_id ); $taxonomy_name = $term->taxonomy; $custom_taxonomies = ampforwp_get_setting('ampforwp-custom-taxonomies'); if(!empty($custom_taxonomies)){ if(( is_archive() && !in_array( $taxonomy_name,$custom_taxonomies) ) ){ $archive_check_tax = true; } } }else{ if( ( (function_exists('is_shop') && !is_shop() ) && is_archive() && 0 == ampforwp_get_setting('ampforwp-archive-support')) || ( !function_exists('is_shop') &&is_archive() && 0 == ampforwp_get_setting('ampforwp-archive-support')) || (is_category() && 0 == ampforwp_get_setting('ampforwp-archive-support-cat')) || (is_tag() && 0 == ampforwp_get_setting('ampforwp-archive-support-tag')) ){ $archive_check = true; } } if( !function_exists('amp_woocommerce_pro_add_woocommerce_support') && ( (function_exists('is_product_category') && is_product_category()) || (function_exists('is_product_tag') && is_product_tag()) || (function_exists('is_shop') && is_shop() ) )){ $archive_check = true; } if ( (true == $archive_check_tax) || ( true == $archive_check ) || true == $hide_cats_amp || ((ampforwp_is_home() || ampforwp_is_front_page()) && 0 == ampforwp_get_setting('ampforwp-homepage-on-off-support')) ) { $url = $wp->request; if( ampforwp_is_home() && get_query_var('amp') ) { $url = 'amp'; } $redirection_location = add_query_arg( '', '', home_url( $url ) ); $redirection_location = trailingslashit($redirection_location ); $redirection_location = dirname($redirection_location); wp_safe_redirect( $redirection_location ); exit; } } // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. $current_url = home_url(add_query_arg(array($_GET), $wp->request)); //AMP on Search Pages #3977 if(is_search() && 0 == ampforwp_get_setting('amp-redirection-search')){ if(strpos( $current_url, "amp=1&")!==false){ $redirect_search = str_replace("amp=1&", '', $current_url); wp_safe_redirect( $redirect_search, 301 ); exit; }else{ return; } } if (ampforwp_get_setting('amp-desktop-redirection')) { require_once AMPFORWP_PLUGIN_DIR.'/includes/vendor/Mobile_Detect.php'; $mobile_detect = new AMPforWP_Mobile_Detect; $isMobile = $mobile_detect->isMobile(); if (!$isMobile ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. $current_url = home_url(add_query_arg(array($_GET), $wp->request)); if (ampforwp_get_setting('amp-core-end-point')) { $current_url = explode('?', $current_url); }else{ $current_url = explode('/', $current_url); } $check = AMPFORWP_AMP_QUERY_VAR; if (in_array( $check , $current_url ) ) { $current_url = array_flip($current_url); unset($current_url['amp']); $current_url = array_flip($current_url); $current_url = implode('/', $current_url); wp_safe_redirect( $current_url ); exit; } } } // Redirect ?nonamp=1 to normal url #3269 $current_url = $check = ''; /* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized */ if(isset($_SERVER['REQUEST_URI'])){ /* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized */ $current_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://" . AMPFROWP_HOST_NAME . htmlspecialchars( $_SERVER['REQUEST_URI'] ); } if(function_exists('googlesitekit_activate_plugin')){ $current_url = remove_query_arg( '_gl', $current_url); $current_url = remove_query_arg(array('', '_gl')); } $current_url = explode('/', $current_url); $check = '?nonamp=1'; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if (( isset($_GET['nonamp']) && 1 == $_GET['nonamp'] ) && function_exists('session_start') && !isset($_SESSION)){ session_start(); $_SESSION['ampforwp_mobile'] = 'exit'; } if (in_array( $check , $current_url ) ) { $current_url = array_flip($current_url); unset($current_url['?nonamp=1']); $current_url = array_flip($current_url); $current_url = implode('/', $current_url); if(ampforwp_get_setting('amp-footer-link-non-amp-page-alternate')){ $current_url = user_trailingslashit(esc_url($current_url))."?namp=1"; }else{ $current_url = user_trailingslashit(esc_url($current_url)); } wp_safe_redirect( $current_url ); exit; } // HIDE/SHOW TAG AND CATEGORY #4326 if(ampforwp_is_amp_endpoint() ) { if(is_tag() || is_category() || is_tax()){ $term_id = get_queried_object()->term_id; $tax_status = ampforwp_get_taxonomy_meta($term_id,'status'); if($tax_status==false){ // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. $go_to_url = home_url(add_query_arg($_GET,$wp->request)); $go_to_url = str_replace("/amp", '', $go_to_url); $go_to_url = remove_query_arg('amp',$go_to_url); wp_safe_redirect( esc_url($go_to_url) ); exit; } }else if(is_single()){ $tax_status = ampforwp_get_taxonomy_meta('','post_status'); if($tax_status==false){ // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. $go_to_url = home_url(add_query_arg($_GET,$wp->request)); $go_to_url = str_replace("/amp", '', $go_to_url); $go_to_url = remove_query_arg('amp',$go_to_url); wp_safe_redirect( esc_url($go_to_url) ); exit; } } } //Auto redirect /amp to ?amp when 'Change End Point to ?amp' option is enabled #2480 if ( ampforwp_is_amp_endpoint() && true == ampforwp_get_setting('amp-core-end-point') ){ $current_url = $endpoint = $new_url = ''; $current_url = home_url($wp->request); $amp = AMPFORWP_AMP_QUERY_VAR; $endpoint = '?'.$amp; $checker = explode('/', $current_url); $amp_check = in_array($amp, $checker); if ( true == $amp_check && $amp == end($checker) ) { $pos = strrpos( $current_url , '/'.$amp); $search_length = strlen('/'.$amp); $new_url = substr_replace( $current_url , $endpoint , $pos , $search_length ); wp_safe_redirect( $new_url ); exit; } } $mob_pres_link = false; if(function_exists('ampforwp_mobile_redirect_preseve_link')){ $mob_pres_link = ampforwp_mobile_redirect_preseve_link(); } //Stop Mobile Redirection $stop_mob_redirection = false; $stop_mob_redirection = apply_filters('ampforwp_modify_mobile_redirection',$stop_mob_redirection); if($stop_mob_redirection === true){ return; } // AMP Takeover if ( (ampforwp_get_setting('ampforwp-amp-takeover') || $mob_pres_link == true) && !ampforwp_is_non_amp() ) { $redirection_location = ''; $current_location = ''; $home_url = ''; $blog_page_id = ''; $amp_on_off = ''; $current_location = home_url( $wp->request); $home_url = get_bloginfo('url'); /* * If certain conditions does not match then return early and exit from redirection */ // #4541 // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. $this_url = home_url(add_query_arg(array($_GET), $wp->request)); if(preg_match('/robots\.txt/', $this_url)){ return; } // return if the current page is Feed page, as we don't need anything on feedpaged if ( is_feed() ) { return; } if ( function_exists('is_embed') && is_embed() ){ return; } // Homepage if ( ( ampforwp_is_home() || $current_location == $home_url ) && ! $redux_builder_amp['ampforwp-homepage-on-off-support'] ) { return; } // Frontpage if ( is_front_page() && $current_location == $home_url && ampforwp_is_front_page()) { return; } // Archive if ( is_archive() && ! $redux_builder_amp['ampforwp-archive-support'] ) { return; } //blogpage if ( is_home() && $redux_builder_amp['amp-on-off-for-all-pages']==false ) { return; } // Enabling AMP Takeover only when selected in Custom Post Type $supported_types_for_takeover = array(); $supported_types_for_takeover = ampforwp_get_all_post_types(); if( $supported_types_for_takeover ){ $current_type = get_post_type(get_the_ID()); if(!in_array($current_type, $supported_types_for_takeover)){ return ; } } // Single and Pages if ( is_singular() ) { $amp_metas = json_decode(get_post_meta( get_the_ID(),'ampforwp-post-metas',true), true ); if(!empty($amp_metas['ampforwp-amp-on-off'])){ if ( 'hide-amp' == $amp_metas['ampforwp-amp-on-off'] ) { $amp_on_off = true; } } } if ( ( is_single() && !$redux_builder_amp['amp-on-off-for-all-posts'] ) || ( is_page() && !$redux_builder_amp['amp-on-off-for-all-pages'] ) || ($amp_on_off) ) { return; } // Blog page if ( ampforwp_is_blog() ) { $blog_page_id = get_option('page_for_posts'); $redirection_location = get_the_permalink($blog_page_id); } // if the current page is ampfrontpage or normal frontpage take it to homepage of site if ( ampforwp_is_front_page() || is_front_page() ) { $redirection_location = $home_url; } // Single.php and page.php if ( ( is_single() && $redux_builder_amp['amp-on-off-for-all-posts'] ) || ( is_page() && $redux_builder_amp['amp-on-off-for-all-pages'] ) ) { $redirection_location = get_the_permalink(); $url_path = ''; if (true == ampforwp_get_setting('amp-core-end-point')) { $url_path = trim(wp_parse_url(add_query_arg(array()), PHP_URL_QUERY),'/' ); if (strpos($url_path, '&') !== false) { $url_path = explode('&', $url_path); $url_path = end($url_path); if ($url_path != AMPFORWP_AMP_QUERY_VAR) { $redirection_location .= '?'. $url_path; } } } } $ampforwp_amp_post_on_off_meta = ""; $ampforwp_amp_post_on_off_meta = get_post_meta( ampforwp_get_the_ID(),'ampforwp-amp-on-off',true); if(false == $ampforwp_amp_post_on_off_meta && !ampforwp_is_home()){ return; } /* Fallback, if for any reason, $redirection_location is still NULL * then redirect it to homepage. */ if ( empty( $redirection_location ) ) { $redirection_location = $home_url; } wp_safe_redirect( $redirection_location ); exit; } // Mobile redirection if ( ampforwp_get_setting('amp-mobile-redirection') && false == ampforwp_get_setting('ampforwp-development-mode')) { require_once AMPFORWP_PLUGIN_DIR.'/includes/vendor/Mobile_Detect.php'; $post_type = ''; $supported_types = ''; $supported_amp_post_types = array(); $url_to_redirect = ''; $supported_types = ampforwp_get_all_post_types(); $supported_types = apply_filters('get_amp_supported_post_types',$supported_types); $post_type = get_post_type(); $supported_amp_post_types = in_array( $post_type , $supported_types ); $url_to_redirect = ampforwp_amphtml_generator(); $mobile_detect = $isTablet = ''; // instantiate the Mobile detect class $mobile_detect = new AMPforWP_Mobile_Detect; $isMobile = $mobile_detect->isMobile(); $isTablet = $mobile_detect->isTablet(); $isTabletUserAction = ampforwp_get_setting('amp-tablet-redirection'); $redirectToAMP = false; if( $isMobile && $isTabletUserAction && $isTablet ){ //Only For tablet $redirectToAMP = true; }else if($isMobile && !$isTablet){ // Only for mobile $redirectToAMP = true; } // No mobile redirection on oembeds #2003 if ( function_exists('is_embed') && is_embed() ){ return; } // Return if Dev mode is enabled if ( isset($redux_builder_amp['ampforwp-development-mode']) && $redux_builder_amp['ampforwp-development-mode'] ) { return; } // Return if the set value is not met and do not start redirection if ( 'disable' == ampforwp_meta_redirection_status() ) { return; } if ( false == $supported_amp_post_types && !ampforwp_is_front_page() ) { return; } if ( is_archive() && 0 == $redux_builder_amp['ampforwp-archive-support'] ) { return; } if ( is_feed() ) { return; } if(get_query_var( 'json' )){ return; } if(get_query_var( 'robots' )){ return; } // #1192 Password Protected posts exclusion if ( post_password_required( $post ) ) { return; } // Return if some categories are selected as Hide #999 if ( is_category_amp_disabled() ) { return; } // If we are in AMP mode then retrun and dont start redirection if ( ampforwp_is_amp_endpoint() ) { return; } if ( is_page() && 0 == ampforwp_get_setting('amp-on-off-for-all-pages') && !ampforwp_is_front_page() ) { return; } if ( is_home() && is_front_page() && 0 == $redux_builder_amp['ampforwp-homepage-on-off-support'] ) { return; } if ( is_front_page() && 0 == $redux_builder_amp['ampforwp-homepage-on-off-support'] ) { return; } if ( function_exists('session_id') && ! session_id() && $redirectToAMP) { session_start(); } if ( isset( $_SESSION['ampforwp_mobile'] ) && (isset($_SESSION['ampforwp_amp_mode']) && 'mobile-on' == $_SESSION['ampforwp_amp_mode']) && 'exit' == $_SESSION['ampforwp_mobile'] ) { return; } // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if ( $isMobile && (isset($_SESSION['ampforwp_amp_mode']) && 'mobile-on' == $_SESSION['ampforwp_amp_mode']) && ( isset($_GET['nonamp']) && 1 == $_GET['nonamp'] ) ){ // non mobile session variable creation session_start(); $_SESSION['ampforwp_mobile'] = 'exit'; if ( ampforwp_is_amp_endpoint() ) { session_destroy(); } } if ( function_exists('weglot_plugin_loaded') ) { $url_to_redirect = ampforwp_get_weglot_url(); $url_to_redirect = ampforwp_url_controller($url_to_redirect); } // Check if we are on Mobile phones then start redirection process if ( $redirectToAMP ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if(isset($_GET['namp']) && $_GET['namp']==1){ return; } if(class_exists('stcr\\stcr_manage') ){ $check_url = implode(', ', $current_url); if(in_array('comment-subscriptions', $current_url) && strpos($check_url,'srp')!=false && strpos($check_url,'srk')!=false){ return true; } } // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if(!isset($_GET['nonamphead']) && isset($_SESSION['nonamphead']) && in_array($url_to_redirect, $_SESSION['nonamphead'])){ return; } // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if (( ! isset($_SESSION['ampforwp_amp_mode']) || ! isset($_GET['nonamp'])) && !isset($_GET['nonamphead']) ) { $_SESSION['ampforwp_amp_mode'] = 'mobile-on'; if ( $url_to_redirect ) { $redirect_host = wp_parse_url( $url_to_redirect, PHP_URL_HOST ); if ( is_string( $redirect_host ) && '' !== $redirect_host ) { add_filter( 'allowed_redirect_hosts', static function ( $hosts ) use ( $redirect_host ) { $hosts[] = $redirect_host; return $hosts; } ); } wp_safe_redirect( $url_to_redirect, 301 ); exit(); } // if nothing matches then return back return; } } if(class_exists('stcr\\stcr_manage') ){ $check_url = implode(', ', $current_url); if(in_array('comment-subscriptions', $current_url) && strpos($check_url,'srp')!=false && strpos($check_url,'srk')!=false){ return true; } } if(ampforwp_is_amp_endpoint()==false && $redirectToAMP==false){ // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if(!isset($_GET['nonamphead']) && isset($_SESSION['nonamphead']) && in_array($url_to_redirect, $_SESSION['nonamphead'])){ return; } // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if (( ! isset($_SESSION['ampforwp_amp_mode']) || ! isset($_GET['nonamp'])) && !isset($_GET['nonamphead']) ) { $_SESSION['ampforwp_amp_mode'] = 'mobile-on'; if ( $url_to_redirect ) { add_action('wp_head', 'ampforwp_mobile_redirection_js'); } return; } } // #1947 when nonamp=1 it should redirect to original link $go_to_url = ""; $url = ""; $url = ampforwp_amphtml_generator(); if ( empty($url) ) { $url = home_url( $wp->request ); } $nonamp_checker = get_query_var( 'nonamp'); $nonamphead_checker = get_query_var( 'nonamphead'); if($url){ if( $nonamp_checker == 1 ){ $go_to_url = remove_query_arg('nonamp', $url); $go_to_url = explode('/', $go_to_url); $go_to_url = array_flip($go_to_url); if(true == ampforwp_get_setting('amp-core-end-point') || isset($go_to_url['?amp']) ){ unset($go_to_url['?amp']); } if(isset($go_to_url['amp'])){ unset($go_to_url['amp']); } $go_to_url = array_flip($go_to_url); $go_to_url = implode('/', $go_to_url); wp_safe_redirect( $go_to_url, 301 ); exit; }elseif($nonamphead_checker == 1){ $go_to_url = home_url( $wp->request ); if($go_to_url){ $_SESSION['nonamphead'][ampforwp_url_controller($go_to_url)] = ampforwp_url_controller($go_to_url); } wp_safe_redirect( $go_to_url, 301 ); exit; }else{ return; } } session_destroy(); return; } } // #1947 when nonamp=1 it should redirect to original link so that google add_filter( 'query_vars', 'ampforwp_custom_query_var' ); function ampforwp_custom_query_var($vars) { $vars[] = 'nonamp'; $vars[] = 'nonamphead'; return $vars; } // #1947 ends here