- WordPress 6.9.4 (es_ES) with Kadence theme - Homepage: Hero, La Asociación, Pilares, Beneficios, Eventos, Miembros, Hazte Miembro, Contacto - Brand identity: #13294b navy, #a12932 burgundy, #c69c48 gold - Fonts: Raleway (headings) + Source Sans 3 (body) + Lato (UI) - Plugins: Kadence Blocks, Polylang, Contact Form 7 - Custom CSS with full brand styling and responsive layout - HTTPS enforced via wp-config.php proxy detection
193 lines
6.5 KiB
PHP
193 lines
6.5 KiB
PHP
<?php
|
|
/**
|
|
* Outputs google fonts.
|
|
*/
|
|
|
|
use function KadenceWP\KadenceBlocks\get_webfont_url;
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit; // Exit if accessed directly
|
|
}
|
|
|
|
/**
|
|
* Class to create a minified css output.
|
|
*/
|
|
class Kadence_Blocks_Google_Fonts {
|
|
/**
|
|
* The singleton instance
|
|
*/
|
|
private static $instance = null;
|
|
|
|
/**
|
|
* Google fonts to enqueue
|
|
*
|
|
* @var array
|
|
*/
|
|
public static $gfonts = array();
|
|
|
|
/**
|
|
* Google fonts to enqueue
|
|
*
|
|
* @var array
|
|
*/
|
|
public static $footer_gfonts = array();
|
|
|
|
/**
|
|
* Instance Control
|
|
*/
|
|
public static function get_instance() {
|
|
if ( is_null( self::$instance ) ) {
|
|
self::$instance = new self();
|
|
}
|
|
return self::$instance;
|
|
}
|
|
/**
|
|
* Class Constructor.
|
|
*/
|
|
public function __construct() {
|
|
add_action( 'wp_head', array( $this, 'frontend_gfonts' ), 85 );
|
|
add_action( 'wp_footer', array( $this, 'frontend_footer_gfonts' ), 85 );
|
|
}
|
|
/**
|
|
* Load the front end Google Fonts
|
|
*/
|
|
public function frontend_gfonts() {
|
|
if ( empty( self::$gfonts ) ) {
|
|
return;
|
|
}
|
|
if ( class_exists( 'Kadence_Blocks_Frontend' ) ) {
|
|
$ktblocks_instance = Kadence_Blocks_Frontend::get_instance();
|
|
foreach ( self::$gfonts as $key => $font ) {
|
|
if ( ! array_key_exists( $key, $ktblocks_instance::$gfonts ) ) {
|
|
$add_font = array(
|
|
'fontfamily' => $font['fontfamily'],
|
|
'fontvariants' => ( isset( $font['fontvariants'] ) && ! empty( $font['fontvariants'] ) && is_array( $font['fontvariants'] ) ? $font['fontvariants'] : array() ),
|
|
'fontsubsets' => ( isset( $font['fontsubsets'] ) && ! empty( $font['fontsubsets'] ) && is_array( $font['fontsubsets'] ) ? $font['fontsubsets'] : array() ),
|
|
);
|
|
$ktblocks_instance::$gfonts[ $key ] = $add_font;
|
|
} else {
|
|
foreach ( $font['fontvariants'] as $variant ) {
|
|
if ( ! in_array( $variant, $ktblocks_instance::$gfonts[ $key ]['fontvariants'], true ) ) {
|
|
array_push( $ktblocks_instance::$gfonts[ $key ]['fontvariants'], $variant );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
$print_google_fonts = apply_filters( 'kadence_woo_print_google_fonts', true );
|
|
if ( ! $print_google_fonts ) {
|
|
return;
|
|
}
|
|
$this->print_gfonts( self::$gfonts );
|
|
}
|
|
}
|
|
/**
|
|
* Load the front end Google Fonts
|
|
*/
|
|
public function frontend_footer_gfonts() {
|
|
if ( empty( self::$footer_gfonts ) ) {
|
|
return;
|
|
}
|
|
if ( class_exists( 'Kadence_Blocks_Frontend' ) ) {
|
|
$ktblocks_instance = Kadence_Blocks_Frontend::get_instance();
|
|
foreach ( self::$footer_gfonts as $key => $font ) {
|
|
if ( ! array_key_exists( $key, $ktblocks_instance::$footer_gfonts ) ) {
|
|
$add_font = array(
|
|
'fontfamily' => $font['fontfamily'],
|
|
'fontvariants' => ( isset( $font['fontvariants'] ) && ! empty( $font['fontvariants'] ) && is_array( $font['fontvariants'] ) ? $font['fontvariants'] : array() ),
|
|
'fontsubsets' => ( isset( $font['fontsubsets'] ) && ! empty( $font['fontsubsets'] ) && is_array( $font['fontsubsets'] ) ? $font['fontsubsets'] : array() ),
|
|
);
|
|
$ktblocks_instance::$footer_gfonts[ $key ] = $add_font;
|
|
} else {
|
|
foreach ( $font['fontvariants'] as $variant ) {
|
|
if ( ! in_array( $variant, $ktblocks_instance::$footer_gfonts[ $key ]['fontvariants'], true ) ) {
|
|
array_push( $ktblocks_instance::$footer_gfonts[ $key ]['fontvariants'], $variant );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
$print_google_fonts = apply_filters( 'kadence_woo_print_footer_google_fonts', true );
|
|
if ( ! $print_google_fonts ) {
|
|
return;
|
|
}
|
|
$this->print_gfonts( self::$footer_gfonts );
|
|
}
|
|
}
|
|
/**
|
|
* Print gFonts
|
|
*/
|
|
public function print_gfonts( $gfonts ) {
|
|
$link = '';
|
|
$subsets = array();
|
|
foreach ( $gfonts as $key => $gfont_values ) {
|
|
if ( ! empty( $link ) ) {
|
|
$link .= '%7C'; // Append a new font to the string.
|
|
}
|
|
$link .= $gfont_values['fontfamily'];
|
|
if ( ! empty( $gfont_values['fontvariants'] ) ) {
|
|
$link .= ':';
|
|
$link .= implode( ',', $gfont_values['fontvariants'] );
|
|
}
|
|
if ( ! empty( $gfont_values['fontsubsets'] ) ) {
|
|
foreach ( $gfont_values['fontsubsets'] as $subset ) {
|
|
if ( ! empty( $subset ) && ! in_array( $subset, $subsets ) ) {
|
|
array_push( $subsets, $subset );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ( ! empty( $subsets ) ) {
|
|
$link .= '&subset=' . implode( ',', $subsets );
|
|
}
|
|
if ( apply_filters( 'kadence_display_swap_google_fonts', true ) ) {
|
|
$link .= '&display=swap';
|
|
}
|
|
|
|
$full_link = 'https://fonts.googleapis.com/css?family=' . esc_attr( str_replace( '|', '%7C', $link ) );
|
|
$local_font_settings = get_option( 'kadence_blocks_font_settings' );
|
|
if ( $local_font_settings && isset( $local_font_settings['load_fonts_local'] ) && $local_font_settings['load_fonts_local'] == 'true' && function_exists( 'KadenceWP\KadenceBlocks\get_webfont_url' )) {
|
|
$full_link = get_webfont_url( htmlspecialchars_decode( $full_link ) );
|
|
}
|
|
echo '<link href="' . $full_link . '" rel="stylesheet">'; //phpcs:ignore
|
|
}
|
|
/**
|
|
* Add gFonts.
|
|
*/
|
|
public function add_fonts( $fonts ) {
|
|
if ( empty( $fonts ) ) {
|
|
return;
|
|
}
|
|
if ( is_array( $fonts ) ) {
|
|
foreach ( $fonts as $key => $font ) {
|
|
if ( ( ! array_key_exists( $key, self::$gfonts ) && did_action( 'wp_body_open' ) === 0 ) || ( ! array_key_exists( $key, self::$footer_gfonts ) && did_action( 'wp_body_open' ) >= 1) ) {
|
|
$add_font = array(
|
|
'fontfamily' => $font['fontfamily'],
|
|
'fontvariants' => ( isset( $font['fontvariants'] ) && ! empty( $font['fontvariants'] ) && is_array( $font['fontvariants'] ) ? $font['fontvariants'] : array() ),
|
|
'fontsubsets' => ( isset( $font['fontsubsets'] ) && ! empty( $font['fontsubsets'] ) && is_array( $font['fontsubsets'] ) ? $font['fontsubsets'] : array() ),
|
|
);
|
|
// Check if wp_head has already run in which case we need to add to footer fonts.
|
|
if ( did_action( 'wp_body_open' ) >= 1 ) {
|
|
self::$footer_gfonts[ $key ] = $add_font;
|
|
} else {
|
|
self::$gfonts[ $key ] = $add_font;
|
|
}
|
|
} else {
|
|
foreach ( $font['fontvariants'] as $variant ) {
|
|
if ( did_action( 'wp_body_open' ) >= 1 ) {
|
|
if ( is_array(self::$footer_gfonts[ $key ]['fontvariants']) && ! in_array( $variant, self::$footer_gfonts[ $key ]['fontvariants'], true ) ) {
|
|
array_push( self::$footer_gfonts[ $key ]['fontvariants'], $variant );
|
|
}
|
|
} else {
|
|
if ( is_array(self::$gfonts[ $key ]['fontvariants']) && ! in_array( $variant, self::$gfonts[ $key ]['fontvariants'], true ) ) {
|
|
array_push( self::$gfonts[ $key ]['fontvariants'], $variant );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Kadence_Blocks_Google_Fonts::get_instance();
|