array( 'background-color' => '', 'background-image' => '', 'background-repeat' => 'repeat', 'background-position' => 'center center', 'background-size' => 'auto', 'background-attachment' => 'scroll', 'overlay-type' => '', 'overlay-color' => '', 'overlay-gradient' => '', 'background-type' => '', 'background-media' => '', ), 'tablet' => array( 'background-color' => '', 'background-image' => '', 'background-repeat' => 'repeat', 'background-position' => 'center center', 'background-size' => 'auto', 'background-attachment' => 'scroll', 'overlay-type' => '', 'overlay-color' => '', 'overlay-gradient' => '', 'background-type' => '', 'background-media' => '', ), 'mobile' => array( 'background-color' => '', 'background-image' => '', 'background-repeat' => 'repeat', 'background-position' => 'center center', 'background-size' => 'auto', 'background-attachment' => 'scroll', 'overlay-type' => '', 'overlay-color' => '', 'overlay-gradient' => '', 'background-type' => '', 'background-media' => '', ), ); self::$customizer_defaults['responsive-spacing'] = array( 'desktop' => array( 'top' => '', 'right' => '', 'bottom' => '', 'left' => '', ), 'tablet' => array( 'top' => '', 'right' => '', 'bottom' => '', 'left' => '', ), 'mobile' => array( 'top' => '', 'right' => '', 'bottom' => '', 'left' => '', ), 'desktop-unit' => 'px', 'tablet-unit' => 'px', 'mobile-unit' => 'px', ); self::$customizer_defaults['responsive-padding'] = array( 'desktop' => array( 'top' => 3, 'right' => 3, 'bottom' => 3, 'left' => 3, ), 'tablet' => array( 'top' => '', 'right' => '', 'bottom' => '', 'left' => '', ), 'mobile' => array( 'top' => '', 'right' => '', 'bottom' => '', 'left' => '', ), 'desktop-unit' => 'em', 'tablet-unit' => 'em', 'mobile-unit' => 'em', ); self::$customizer_defaults['font-size'] = array( 'desktop' => '', 'tablet' => '', 'mobile' => '', 'desktop-unit' => 'px', 'tablet-unit' => 'px', 'mobile-unit' => 'px', ); self::$customizer_defaults['title-font-size'] = array( 'desktop' => $apply_new_default_color_typo_values ? '32' : '', 'tablet' => '', 'mobile' => '', 'desktop-unit' => 'px', 'tablet-unit' => 'px', 'mobile-unit' => 'px', ); self::$customizer_defaults['title-font-weight'] = $apply_new_default_color_typo_values ? '600' : 'inherit'; self::$customizer_defaults['responsive-slider'] = array( 'desktop' => '', 'tablet' => '', 'mobile' => '', ); self::$customizer_defaults['responsive-color'] = array( 'desktop' => '', 'tablet' => '', 'mobile' => '', ); self::$customizer_defaults['font-extras'] = array( 'line-height' => '', 'line-height-unit' => 'em', 'letter-spacing' => '', 'letter-spacing-unit' => 'px', 'text-transform' => '', 'text-decoration' => '', ); add_action( 'customize_register', array( $this, 'posts_structures_customize_register' ), 2 ); add_action( 'astra_get_fonts', array( $this, 'add_fonts' ), 1 ); add_action( 'customize_preview_init', array( $this, 'preview_scripts' ) ); } /** * Enqueue google fonts. * * @return void * @since 4.0.0 */ public function add_fonts() { $post_types = self::get_supported_post_types(); foreach ( $post_types as $index => $post_type ) { // Single Banner - Font Support. $title_section = 'ast-dynamic-single-' . $post_type; $single_title_font_family = astra_get_option( $title_section . '-title-font-family' ); $single_title_font_weight = astra_get_option( $title_section . '-title-font-weight' ); Astra_Fonts::add_font( $single_title_font_family, $single_title_font_weight ); $single_text_font_family = astra_get_option( $title_section . '-text-font-family' ); $single_text_font_weight = astra_get_option( $title_section . '-text-font-weight' ); Astra_Fonts::add_font( $single_text_font_family, $single_text_font_weight ); $single_meta_font_family = astra_get_option( $title_section . '-meta-font-family' ); $single_meta_font_weight = astra_get_option( $title_section . '-meta-font-weight' ); Astra_Fonts::add_font( $single_meta_font_family, $single_meta_font_weight ); // Archive Banner - Font Support. $title_section = 'ast-dynamic-archive-' . $post_type; $archive_text_font_family = astra_get_option( $title_section . '-text-font-family' ); $archive_text_font_weight = astra_get_option( $title_section . '-text-font-weight' ); Astra_Fonts::add_font( $archive_text_font_family, $archive_text_font_weight ); $archive_title_font_family = astra_get_option( $title_section . '-title-font-family' ); $archive_title_font_weight = astra_get_option( $title_section . '-title-font-weight' ); Astra_Fonts::add_font( $archive_title_font_family, $archive_title_font_weight ); } foreach ( self::get_special_page_types() as $index => $special_type ) { $title_section = 'section-' . $special_type . '-page-title'; $instance_text_font_family = astra_get_option( $title_section . '-text-font-family' ); $instance_text_font_weight = astra_get_option( $title_section . '-text-font-weight' ); Astra_Fonts::add_font( $instance_text_font_family, $instance_text_font_weight ); $instance_title_font_family = astra_get_option( $title_section . '-title-font-family' ); $instance_title_font_weight = astra_get_option( $title_section . '-title-font-weight' ); Astra_Fonts::add_font( $instance_title_font_family, $instance_title_font_weight ); } } /** * Add postMessage support for site title and description for the Theme Customizer. * * @param WP_Customize_Manager $wp_customize Theme Customizer object. * * @since 4.0.0 */ public function posts_structures_customize_register( $wp_customize ) { /** * Register Config control in Related Posts. */ // @codingStandardsIgnoreStart WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound require_once ASTRA_THEME_POST_STRUCTURE_DIR . 'customizer/class-astra-posts-structures-configs.php'; require_once ASTRA_THEME_POST_STRUCTURE_DIR . 'customizer/class-astra-posts-single-structures-configs.php'; require_once ASTRA_THEME_POST_STRUCTURE_DIR . 'customizer/class-astra-posts-archive-structures-configs.php'; require_once ASTRA_THEME_POST_STRUCTURE_DIR . 'customizer/class-astra-posts-special-archive-structures-configs.php'; // @codingStandardsIgnoreEnd WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound } /** * Get all supported pots types & filter the public ones for further query. * * @since 4.0.0 * @return array $post_types */ public static function get_supported_post_types() { if ( empty( self::$supported_post_types ) || is_customize_preview() ) { self::$supported_post_types = astra_get_queried_post_types(); } return apply_filters( 'astra_dynamic_post_structure_posttypes', self::$supported_post_types ); } /** * Get special pages query. * * @since 4.6.0 * @return array $special_pages */ public static function get_special_page_types() { $special_pages = array( 'search', ); return apply_filters( 'astra_dynamic_special_pages', $special_pages ); } /** * Customizer preview support. * * @since 4.0.0 */ public function preview_scripts() { /** @psalm-suppress RedundantCondition */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $dir_name = ( SCRIPT_DEBUG ) ? 'unminified' : 'minified'; /** @psalm-suppress RedundantCondition */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort /** @psalm-suppress RedundantCondition */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $file_prefix = ( SCRIPT_DEBUG ) ? '' : '.min'; /** @psalm-suppress RedundantCondition */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort wp_enqueue_script( 'astra-post-strctures-customizer-preview', ASTRA_THEME_POST_STRUCTURE_URI . 'assets/js/' . $dir_name . '/customizer-preview' . $file_prefix . '.js', array( 'customize-preview', 'astra-customizer-preview-js' ), ASTRA_THEME_VERSION, true ); // Localize variables for further JS. wp_localize_script( 'astra-post-strctures-customizer-preview', 'AstraPostStrcturesData', array( 'post_types' => self::get_supported_post_types(), 'special_pages' => self::get_special_page_types(), 'tablet_break_point' => astra_get_tablet_breakpoint(), 'mobile_break_point' => astra_get_mobile_breakpoint(), 'enabled_related_post' => astra_get_option( 'enable-related-posts', false ), ) ); } /** * Get customizer dynamic default. * * @param string $key Retrieve default for this parameter. * * @since 4.0.0 */ public static function get_customizer_default( $key ) { return isset( self::$customizer_defaults[ $key ] ) ? self::$customizer_defaults[ $key ] : array(); } } /** * Initialize class object with 'new' instance. */ new Astra_Posts_Structure_Loader();