mirror of
https://git.sindominio.net/estibadores/wordpress.git
synced 2024-11-23 02:51:06 +01:00
425 lines
13 KiB
PHP
425 lines
13 KiB
PHP
<?php
|
|
|
|
/**
|
|
* The Disable Google Fonts Plugin
|
|
*
|
|
* Disable enqueuing of fonts from Google used by WordPress core, default themes, Gutenberg, and many more
|
|
*
|
|
* @package Disable_Google_Fonts
|
|
* @subpackage Main
|
|
*/
|
|
|
|
/**
|
|
* Plugin Name: Disable Google Fonts
|
|
* Plugin URI: https://milandinic.com/wordpress/plugins/disable-google-fonts/
|
|
* Description: Disable enqueuing of fonts from Google used by WordPress core, default themes, Gutenberg, and many more.
|
|
* Author: Milan Dinić
|
|
* Author URI: https://milandinic.com/
|
|
* Version: 2.0
|
|
* Text Domain: disable-google-fonts
|
|
* Domain Path: /languages/
|
|
* License: GPL
|
|
*/
|
|
|
|
/* Exit if accessed directly */
|
|
if ( ! defined( 'ABSPATH' ) ) exit;
|
|
|
|
class Disable_Google_Fonts {
|
|
/**
|
|
* Hook actions and filters.
|
|
*
|
|
* @since 1.0
|
|
* @access public
|
|
*/
|
|
public function __construct() {
|
|
add_filter( 'gettext_with_context', array( $this, 'disable_google_fonts' ), 888, 4 );
|
|
}
|
|
|
|
/**
|
|
* Add action links to plugins page.
|
|
*
|
|
* @since 1.2
|
|
* @deprecated 1.3
|
|
* @access public
|
|
*
|
|
* @param array $links Plugin's action links.
|
|
* @param string $plugin_file Path to the plugin file.
|
|
* @return array $links Plugin's action links.
|
|
*/
|
|
public function action_links( $links, $plugin_file ) {
|
|
_deprecated_function( __METHOD__, '1.3' );
|
|
|
|
return $links;
|
|
}
|
|
|
|
/**
|
|
* Force 'off' as a result of font toggler string translation.
|
|
*
|
|
* @since 2.0
|
|
* @access public
|
|
*
|
|
* @param string $translations Translated text.
|
|
* @param string $text Text to translate.
|
|
* @param string $context Context information for the translators.
|
|
* @param string $domain Text domain. Unique identifier for retrieving translated strings.
|
|
* @return string $translations Translated text.
|
|
*/
|
|
public function disable_google_fonts( $translations, $text, $context, $domain ) {
|
|
switch ( $text ) {
|
|
case 'on':
|
|
// Pass for most cases.
|
|
if ( $this->is_ending_with_font_toggler( $context ) || in_array( $context, $this->get_font_toggler_variants() ) ) {
|
|
$translations = 'off';
|
|
}
|
|
break;
|
|
case 'Noto Serif:400,400i,700,700i':
|
|
if ( 'Google Font Name and Variants' === $context ) {
|
|
$translations = 'off';
|
|
}
|
|
break;
|
|
}
|
|
|
|
return $translations;
|
|
}
|
|
|
|
/**
|
|
* Check if text is ending with variation of 'font(s):( )on or off'.
|
|
*
|
|
* For most strings that are used as font togglers, context is ending
|
|
* with this text. This method checks if that is the case.
|
|
*
|
|
* @since 2.0
|
|
* @access public
|
|
*
|
|
* @param string $text Text to check.
|
|
* @return bool Whether text is ending with phrase or not.
|
|
*/
|
|
public function is_ending_with_font_toggler( $text ) {
|
|
if ( preg_match( '/font[s]?:\s?on or off$/i', $text ) ) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get context variants that cannot be detected with string font toggler checker.
|
|
*
|
|
* @since 2.0
|
|
*
|
|
* @return array
|
|
*/
|
|
public function get_font_toggler_variants() {
|
|
return array(
|
|
'arimo:on or off',
|
|
'Assistant:on or off',
|
|
'Atma: on or off',
|
|
'Crimson Text: on or off',
|
|
'Dancing Script: on or off',
|
|
'Droid sans: on or off',
|
|
'Google font: on',
|
|
'Google Font for body text: on or off',
|
|
'Google Font for heading text: on or off',
|
|
'Google Font for menu text: on or off',
|
|
'Google fonts: "on" or "off"',
|
|
'Great Vibes:on or off',
|
|
'greatvibes:on or off',
|
|
'Hind: on or off',
|
|
'Indie Flower: on or off',
|
|
'Josefin Sans: on or off',
|
|
'Lato: on or off',
|
|
'Lato:on or off',
|
|
'Lato : on or off',
|
|
'Lobster:on or off',
|
|
'Lora: on or off',
|
|
'Merriweather: on or off',
|
|
'Merriweather:on or off',
|
|
'montserrat:on or off',
|
|
'Muli: on or off',
|
|
'Nunito Sans: on or off',
|
|
'Open Sans',
|
|
'Open Sans:on or off',
|
|
'Open Sans: on or off',
|
|
'opensans:on or off',
|
|
'Open Sans : on or off',
|
|
'Oswald:on or off',
|
|
'oswald:on or off',
|
|
'Oxygen: on or off',
|
|
'Pacifico: on or off',
|
|
'Pacifico:on or off',
|
|
'pacifico:on or off',
|
|
'Poppins: on or off',
|
|
'playball:on or off',
|
|
'Playfair Display: on or off',
|
|
'Product Sans: on or off',
|
|
'pt_sans:on or off',
|
|
'Raleway: on or off',
|
|
'Roboto',
|
|
'Roboto: on or off',
|
|
'roboto:on or off',
|
|
'Roboto:on or off',
|
|
'Roboto : on or off',
|
|
'Roboto Condensed',
|
|
'Roboto Condensed:on or off',
|
|
'roboto_condensed:on or off',
|
|
'robotocondensed:on or off',
|
|
'Roboto Slab:on or off',
|
|
'Sail:on or off',
|
|
'Scada:on or off',
|
|
'scada:on or off',
|
|
'Shadows Into Light: on or off',
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Force 'off' as a result of Open Sans font toggler string translation.
|
|
*
|
|
* @since 1.0
|
|
* @access public
|
|
*
|
|
* @param string $translations Translated text.
|
|
* @param string $text Text to translate.
|
|
* @param string $context Context information for the translators.
|
|
* @param string $domain Text domain. Unique identifier for retrieving translated strings.
|
|
* @return string $translations Translated text.
|
|
*/
|
|
public function disable_open_sans( $translations, $text, $context, $domain ) {
|
|
if ( 'Open Sans font: on or off' == $context && 'on' == $text ) {
|
|
$translations = 'off';
|
|
}
|
|
|
|
return $translations;
|
|
}
|
|
|
|
/**
|
|
* Force 'off' as a result of Lato font toggler string translation.
|
|
*
|
|
* @since 1.0
|
|
* @access public
|
|
*
|
|
* @param string $translations Translated text.
|
|
* @param string $text Text to translate.
|
|
* @param string $context Context information for the translators.
|
|
* @param string $domain Text domain. Unique identifier for retrieving translated strings.
|
|
* @return string $translations Translated text.
|
|
*/
|
|
public function disable_lato( $translations, $text, $context, $domain ) {
|
|
if ( 'Lato font: on or off' == $context && 'on' == $text ) {
|
|
$translations = 'off';
|
|
}
|
|
|
|
return $translations;
|
|
}
|
|
|
|
/**
|
|
* Force 'off' as a result of Source Sans Pro font toggler string translation.
|
|
*
|
|
* @since 1.0
|
|
* @access public
|
|
*
|
|
* @param string $translations Translated text.
|
|
* @param string $text Text to translate.
|
|
* @param string $context Context information for the translators.
|
|
* @param string $domain Text domain. Unique identifier for retrieving translated strings.
|
|
* @return string $translations Translated text.
|
|
*/
|
|
public function disable_source_sans_pro( $translations, $text, $context, $domain ) {
|
|
if ( 'Source Sans Pro font: on or off' == $context && 'on' == $text ) {
|
|
$translations = 'off';
|
|
}
|
|
|
|
return $translations;
|
|
}
|
|
|
|
/**
|
|
* Force 'off' as a result of Bitter font toggler string translation.
|
|
*
|
|
* @since 1.0
|
|
* @access public
|
|
*
|
|
* @param string $translations Translated text.
|
|
* @param string $text Text to translate.
|
|
* @param string $context Context information for the translators.
|
|
* @param string $domain Text domain. Unique identifier for retrieving translated strings.
|
|
* @return string $translations Translated text.
|
|
*/
|
|
public function disable_bitter( $translations, $text, $context, $domain ) {
|
|
if ( 'Bitter font: on or off' == $context && 'on' == $text ) {
|
|
$translations = 'off';
|
|
}
|
|
|
|
return $translations;
|
|
}
|
|
|
|
/**
|
|
* Force 'off' as a result of Noto Sans font toggler string translation.
|
|
*
|
|
* @since 1.1
|
|
* @access public
|
|
*
|
|
* @param string $translations Translated text.
|
|
* @param string $text Text to translate.
|
|
* @param string $context Context information for the translators.
|
|
* @param string $domain Text domain. Unique identifier for retrieving translated strings.
|
|
* @return string $translations Translated text.
|
|
*/
|
|
public function disable_noto_sans( $translations, $text, $context, $domain ) {
|
|
if ( 'Noto Sans font: on or off' == $context && 'on' == $text ) {
|
|
$translations = 'off';
|
|
}
|
|
|
|
return $translations;
|
|
}
|
|
|
|
/**
|
|
* Force 'off' as a result of Noto Serif font toggler string translation.
|
|
*
|
|
* @since 1.1
|
|
* @access public
|
|
*
|
|
* @param string $translations Translated text.
|
|
* @param string $text Text to translate.
|
|
* @param string $context Context information for the translators.
|
|
* @param string $domain Text domain. Unique identifier for retrieving translated strings.
|
|
* @return string $translations Translated text.
|
|
*/
|
|
public function disable_noto_serif( $translations, $text, $context, $domain ) {
|
|
if ( 'Noto Serif font: on or off' == $context && 'on' == $text ) {
|
|
$translations = 'off';
|
|
}
|
|
|
|
return $translations;
|
|
}
|
|
|
|
/**
|
|
* Force 'off' as a result of Inconsolata font toggler string translation.
|
|
*
|
|
* @since 1.1
|
|
* @access public
|
|
*
|
|
* @param string $translations Translated text.
|
|
* @param string $text Text to translate.
|
|
* @param string $context Context information for the translators.
|
|
* @param string $domain Text domain. Unique identifier for retrieving translated strings.
|
|
* @return string $translations Translated text.
|
|
*/
|
|
public function disable_inconsolata( $translations, $text, $context, $domain ) {
|
|
if ( 'Inconsolata font: on or off' == $context && 'on' == $text ) {
|
|
$translations = 'off';
|
|
}
|
|
|
|
return $translations;
|
|
}
|
|
|
|
/**
|
|
* Force 'off' as a result of Merriweather font toggler string translation.
|
|
*
|
|
* @since 1.2
|
|
* @access public
|
|
*
|
|
* @param string $translations Translated text.
|
|
* @param string $text Text to translate.
|
|
* @param string $context Context information for the translators.
|
|
* @param string $domain Text domain. Unique identifier for retrieving translated strings.
|
|
* @return string $translations Translated text.
|
|
*/
|
|
public function disable_merriweather( $translations, $text, $context, $domain ) {
|
|
if ( 'Merriweather font: on or off' == $context && 'on' == $text ) {
|
|
$translations = 'off';
|
|
}
|
|
|
|
return $translations;
|
|
}
|
|
|
|
/**
|
|
* Force 'off' as a result of Montserrat font toggler string translation.
|
|
*
|
|
* @since 1.2
|
|
* @access public
|
|
*
|
|
* @param string $translations Translated text.
|
|
* @param string $text Text to translate.
|
|
* @param string $context Context information for the translators.
|
|
* @param string $domain Text domain. Unique identifier for retrieving translated strings.
|
|
* @return string $translations Translated text.
|
|
*/
|
|
public function disable_montserrat( $translations, $text, $context, $domain ) {
|
|
if ( 'Montserrat font: on or off' == $context && 'on' == $text ) {
|
|
$translations = 'off';
|
|
}
|
|
|
|
return $translations;
|
|
}
|
|
|
|
/**
|
|
* Force 'off' as a result of Libre Franklin font toggler string translation.
|
|
*
|
|
* @since 1.3
|
|
* @access public
|
|
*
|
|
* @param string $translations Translated text.
|
|
* @param string $text Text to translate.
|
|
* @param string $context Context information for the translators.
|
|
* @param string $domain Text domain. Unique identifier for retrieving translated strings.
|
|
* @return string $translations Translated text.
|
|
*/
|
|
public function disable_libre_franklin( $translations, $text, $context, $domain ) {
|
|
if ( 'Libre Franklin font: on or off' == $context && 'on' == $text ) {
|
|
$translations = 'off';
|
|
}
|
|
|
|
return $translations;
|
|
}
|
|
|
|
/**
|
|
* Register filters that disable fonts for bundled themes.
|
|
*
|
|
* This filters can be directly hooked as Disable_Google_Fonts::disable_open_sans()
|
|
* but that would mean that comparison is done on each string
|
|
* for each font which creates performance issues.
|
|
*
|
|
* Instead we check active template's name very late and just once
|
|
* and hook appropriate filters.
|
|
*
|
|
* Note that Open Sans disabler is used for both WordPress core
|
|
* and for Twenty Twelve theme.
|
|
*
|
|
* @since 1.0
|
|
* @access public
|
|
*
|
|
* @uses get_template() To get name of the active parent theme.
|
|
* @uses add_filter() To hook theme specific fonts disablers.
|
|
*/
|
|
public function register_theme_fonts_disabler() {
|
|
$template = get_template();
|
|
|
|
switch ( $template ) {
|
|
case 'twentyseventeen' :
|
|
add_filter( 'gettext_with_context', array( $this, 'disable_libre_franklin' ), 888, 4 );
|
|
break;
|
|
case 'twentysixteen' :
|
|
add_filter( 'gettext_with_context', array( $this, 'disable_merriweather' ), 888, 4 );
|
|
add_filter( 'gettext_with_context', array( $this, 'disable_montserrat' ), 888, 4 );
|
|
add_filter( 'gettext_with_context', array( $this, 'disable_inconsolata' ), 888, 4 );
|
|
break;
|
|
case 'twentyfifteen' :
|
|
add_filter( 'gettext_with_context', array( $this, 'disable_noto_sans' ), 888, 4 );
|
|
add_filter( 'gettext_with_context', array( $this, 'disable_noto_serif' ), 888, 4 );
|
|
add_filter( 'gettext_with_context', array( $this, 'disable_inconsolata' ), 888, 4 );
|
|
break;
|
|
case 'twentyfourteen' :
|
|
add_filter( 'gettext_with_context', array( $this, 'disable_lato' ), 888, 4 );
|
|
break;
|
|
case 'twentythirteen' :
|
|
add_filter( 'gettext_with_context', array( $this, 'disable_source_sans_pro' ), 888, 4 );
|
|
add_filter( 'gettext_with_context', array( $this, 'disable_bitter' ), 888, 4 );
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Although it would be preferred to do this on hook,
|
|
* load early to make sure Open Sans is removed
|
|
*/
|
|
$disable_google_fonts = new Disable_Google_Fonts;
|