200 lines
6.9 KiB
PHP
200 lines
6.9 KiB
PHP
<?php
|
|
/**
|
|
* AMP Compatibility.
|
|
*
|
|
* @package Astra Addon
|
|
* @since 1.7.0
|
|
*/
|
|
|
|
/**
|
|
* Customizer Initialization
|
|
*
|
|
* @since 1.7.0
|
|
*/
|
|
class Astra_Addon_AMP_Compatibility {
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
public function __construct() {
|
|
add_action( 'wp', array( $this, 'disable_addon_features' ) );
|
|
}
|
|
|
|
/**
|
|
* Disable features from Astra Pro when AMP endpoint is enabled.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function disable_addon_features() {
|
|
|
|
// If AMP endpoint is not active, bail as we don't need to change anything here.
|
|
if ( true !== astra_addon_is_amp_endpoint() ) {
|
|
return;
|
|
}
|
|
|
|
// Bail if AMP support is disabled by the user.
|
|
if ( false === apply_filters( 'astra_amp_support', true ) ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound
|
|
return;
|
|
}
|
|
|
|
add_filter( 'astra_addon_cache_asset_type', array( $this, 'cache_add_amp_prefix' ) );
|
|
|
|
if ( is_callable( 'Astra_Minify::get_instance' ) ) {
|
|
// Prioritize Astra Addon's CSS in AMP layouts.
|
|
remove_action( 'wp_enqueue_scripts', array( Astra_Minify::get_instance(), 'enqueue_scripts' ) );
|
|
add_action( 'wp_enqueue_scripts', array( Astra_Minify::get_instance(), 'enqueue_scripts' ), 7 );
|
|
}
|
|
|
|
// Sticky Header.
|
|
if ( true === Astra_Ext_Extension::is_active( 'sticky-header' ) && is_callable( 'Astra_Ext_Sticky_Header_Markup::get_instance' ) ) {
|
|
remove_action( 'astra_addon_get_css_files', array( Astra_Ext_Sticky_Header_Markup::get_instance(), 'add_styles' ) );
|
|
remove_action( 'astra_addon_get_js_files', array( Astra_Ext_Sticky_Header_Markup::get_instance(), 'add_scripts' ) );
|
|
remove_filter( 'astra_addon_js_localize', array( Astra_Ext_Sticky_Header_Markup::get_instance(), 'localize_variables' ) );
|
|
remove_action( 'body_class', array( Astra_Ext_Sticky_Header_Markup::get_instance(), 'add_body_class' ) );
|
|
remove_action( 'astra_header', array( Astra_Ext_Sticky_Header_Markup::get_instance(), 'none_header_markup' ), 5 );
|
|
remove_action( 'astra_header', array( Astra_Ext_Sticky_Header_Markup::get_instance(), 'fixed_header_markup' ), 11 );
|
|
remove_filter( 'astra_addon_dynamic_css', 'astra_ext_sticky_header_dynamic_css', 30 );
|
|
remove_filter( 'astra_addon_dynamic_css', 'astra_ext_above_header_sections_dynamic_css', 30 );
|
|
remove_filter( 'astra_addon_dynamic_css', 'astra_ext_below_header_sections_dynamic_css', 30 );
|
|
remove_filter( 'astra_addon_dynamic_css', 'astra_ext_sticky_header_with_site_layouts_dynamic_css' );
|
|
}
|
|
|
|
// Nav Menu Addon.
|
|
if ( true === Astra_Ext_Extension::is_active( 'nav-menu' ) && is_callable( 'Astra_Ext_Nav_Menu_Loader::get_instance' ) ) {
|
|
remove_action( 'astra_addon_get_css_files', array( Astra_Ext_Nav_Menu_Loader::get_instance(), 'add_styles' ) );
|
|
remove_filter( 'wp_nav_menu_args', array( Astra_Ext_Nav_Menu_Loader::get_instance(), 'modify_nav_menu_args' ) );
|
|
remove_filter( 'astra_addon_dynamic_css', 'astra_addon_mega_menu_dynamic_css' );
|
|
}
|
|
|
|
// Page Header Addon.
|
|
if ( true === Astra_Ext_Extension::is_active( 'advanced-headers' ) && is_callable( 'Astra_Ext_Advanced_Headers_Markup::get_instance' ) ) {
|
|
remove_action( 'wp_enqueue_scripts', array( Astra_Ext_Advanced_Headers_Markup::get_instance(), 'add_scripts' ), 9 );
|
|
add_action( 'wp_enqueue_scripts', array( Astra_Ext_Advanced_Headers_Markup::get_instance(), 'add_scripts' ), 6 );
|
|
}
|
|
|
|
// Blog Pro Addon.
|
|
if ( true === Astra_Ext_Extension::is_active( 'blog-pro' ) && is_callable( 'Astra_Ext_Blog_Pro_Markup::get_instance' ) ) {
|
|
// Remove Auto Load Previous Posts option.
|
|
remove_action( 'init', array( Astra_Ext_Blog_Pro_Markup::get_instance(), 'init_action' ) );
|
|
add_filter( 'astra_get_option_ast-auto-prev-post', '__return_false' );
|
|
|
|
// Remove Infinite Scroll option.
|
|
remove_filter( 'astra_theme_js_localize', array( Astra_Ext_Blog_Pro_Markup::get_instance(), 'blog_js_localize' ) );
|
|
remove_filter( 'astra_pagination_markup', array( Astra_Ext_Blog_Pro_Markup::get_instance(), 'astra_blog_pagination' ) );
|
|
add_filter( 'astra_get_option_blog-pagination', array( $this, 'return_number_pagination' ) );
|
|
|
|
}
|
|
|
|
if ( true === Astra_Ext_Extension::is_active( 'advanced-search' ) ) {
|
|
add_filter( 'astra_get_option_header-main-rt-section-search-box-type', array( $this, 'return_slide_search' ) );
|
|
}
|
|
|
|
if ( true === Astra_Ext_Extension::is_active( 'header-sections' ) ) {
|
|
add_filter( 'astra_get_option_above-header-layout', array( $this, 'return_disabled' ) );
|
|
add_filter( 'astra_get_option_below-header-layout', array( $this, 'return_disabled' ) );
|
|
}
|
|
|
|
if ( true === Astra_Ext_Extension::is_active( 'mobile-header' ) ) {
|
|
add_filter( 'astra_get_option_mobile-menu-style', array( $this, 'return_default' ) );
|
|
}
|
|
|
|
if ( true === Astra_Ext_Extension::is_active( 'colors-and-background' ) ) {
|
|
add_filter( 'astra_addon_colors_dynamic_css_desktop', array( $this, 'css_replace_breakpoint_to_amp' ) );
|
|
add_filter( 'astra_addon_colors_dynamic_css_tablet', array( $this, 'css_replace_breakpoint_to_amp' ) );
|
|
add_filter( 'astra_addon_colors_dynamic_css_mobile', array( $this, 'css_replace_breakpoint_to_amp' ) );
|
|
}
|
|
|
|
add_filter( 'astra_addon_render_custom_layout_content', array( $this, 'custom_layout_disable_on_amp' ), 10, 2 );
|
|
}
|
|
|
|
/**
|
|
* Add prefix to Assets cache key if on AMP endpoint.
|
|
*
|
|
* @param String $asset_type Asset type.
|
|
* @return String Asset type with AMP Prefix.
|
|
*/
|
|
public function cache_add_amp_prefix( $asset_type ) {
|
|
return 'amp-' . $asset_type;
|
|
}
|
|
|
|
/**
|
|
* Disable Custom Layout on frontend if it is disabled on AMP.
|
|
*
|
|
* @since 1.7.0
|
|
* @param boolean $status Status true if layout is tobe displayed on the frontend. False is it should not be rendered.
|
|
* @param int $post_id Post ID which is to be rendered from the Custom Layout.
|
|
* @return boolean.
|
|
*/
|
|
public function custom_layout_disable_on_amp( $status, $post_id ) {
|
|
$amp_status = get_post_meta( $post_id, 'amp_status', true );
|
|
if ( 'enabled' === $amp_status || '' === $amp_status ) {
|
|
$status = true;
|
|
} else {
|
|
$status = false;
|
|
}
|
|
|
|
return $status;
|
|
}
|
|
|
|
/**
|
|
* Change the breakpoint CSS class to ast-amp for AMP specific CSS.
|
|
*
|
|
* @since 1.7.0
|
|
*
|
|
* @param String $css compiled css.
|
|
* @return String
|
|
*/
|
|
public function css_replace_breakpoint_to_amp( $css ) {
|
|
return str_replace( 'ast-header-break-point', 'ast-amp', $css );
|
|
}
|
|
|
|
/**
|
|
* FReturn `slide-search` string.
|
|
*
|
|
* @since 1.7.0
|
|
*
|
|
* @return String
|
|
*/
|
|
public function return_slide_search() {
|
|
return 'slide-search';
|
|
}
|
|
|
|
/**
|
|
* Return `disabled` string.
|
|
*
|
|
* @since 1.7.0
|
|
*
|
|
* @return String
|
|
*/
|
|
public function return_disabled() {
|
|
return 'disabled';
|
|
}
|
|
|
|
/**
|
|
* Return `default` string.
|
|
*
|
|
* @since 1.7.0
|
|
*
|
|
* @return String
|
|
*/
|
|
public function return_default() {
|
|
return 'default';
|
|
}
|
|
|
|
/**
|
|
* Return number string.
|
|
*
|
|
* @since 1.7.0
|
|
*
|
|
* @return String
|
|
*/
|
|
public function return_number_pagination() {
|
|
return 'number';
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Kicking this off by calling 'get_instance()' method
|
|
*/
|
|
new Astra_Addon_AMP_Compatibility();
|