Удалить локальный шрифт Awesome, загруженный @ font-face родительской темой - PullRequest
0 голосов
/ 06 апреля 2019

Я использую тему Storefront.В следующем месте:

https://mywebsite.com/wp-content/themes/storefront/assets/css/base/icons.css

есть множество Font Awesome CSS, таких как:

.fa-flask:before {
  content: "\f0c3"; }

.fa-flickr:before {
  content: "\f16e"; }

.fa-flipboard:before {
  content: "\f44d"; }

.storefront-product-pagination a[rel='next']::after {
  content: "\f105";
  padding-left: 1.41575em; }

.single-product .pswp__button {
  background-color: transparent; }

Также есть объявление, которому предшествует комментарий:

/*!
 * Font Awesome Free 5.0.9 by @fontawesome - https://fontawesome.com
 * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
 */
@font-face {
  font-family: 'Font Awesome 5 Free';
  font-style: normal;
  font-weight: 900;
  src: url("../../../assets/fonts/fa-solid-900.eot");
  src: url("../../../assets/fonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../../../assets/fonts/fa-solid-900.woff2") format("woff2"), url("../../../assets/fonts/fa-solid-900.woff") format("woff"), url("../../../assets/fonts/fa-solid-900.ttf") format("truetype"), url("../../../assets/fonts/fa-solid-900.svg#fontawesome") format("svg"); }

Я хотел бы удалить / отменить регистрацию этого локального Font Awesome и заменить его на Font Awesome из источника CDN.

Я пробовал это:

add_action( 'wp_enqueue_scripts', 'load_awesome_from_CDN', 999 );
function load_awesome_from_CDN() {

    wp_dequeue_style( 'font-awesome' );
    wp_deregister_style( 'font-awesome' );  

    wp_enqueue_style('font-awesome', '//use.fontawesome.com/releases/v5.8.1/css/all.css');

}

И это:

// Remove and unregister old font Awesome.
function remove_styles(){      
    wp_dequeue_style('font-awesome');
    wp_deregister_style('font-awesome');    
}
add_action( 'wp_head', 'remove_styles', 999);

// Add new Font Awesome.
function load_awesome() { 
    wp_enqueue_style('font-awesome', '//use.fontawesome.com/releases/v5.8.1/css/all.css');    
}
add_action( 'wp_enqueue_scripts',  'load_awesome', 999);

Оба результата приводят к использованию шрифта CDN (проверено в инструментах разработчика Chbrome): Font Awesome 5 Free Solid - сетевой ресурс (1 глиф)

К сожалению, локальный шрифт загружается в любом случае,что показывают Google PageSpeed ​​и GTmetrix, в результате чего ссылка CDN:

https://use.fontawesome.com/releases/v5.8.1/webfonts/fa-solid-900.woff2

И локальная ссылка:

https://mywebsite.com/wp-content/themes/storefront/assets/fonts/fa-solid-900.woff2

Если я включу кодниже в моей функции локальный шрифт больше не загружается, но я теряю CSS-форматирование из целого файла icons.css, что невозможно, так как там хранится много важных форматов:

wp_dequeue_style( 'storefront-icons' );
wp_deregister_style( 'storefront-icons' );  

МожетЛи я остановить загрузку локального шрифта без взлома .css файла?

1 Ответ

1 голос
/ 07 апреля 2019

Вы не сможете удалить из очереди или отменить регистрацию таких шрифтов, потому что механизм постановки в очередь не работает так.

Регистрация файла сценария / стиля похожа на создание псевдонимов для файлов.Поэтому, когда вы делаете это:

wp_register_script( $handle, $src, $deps, ...)

Вы говорите WP, что вы будете использовать $handle в качестве имени данного файла (и что этот файл имеет некоторые зависимости, версию и т. Д.).

Когда вы ставите сценарий / стиль в очередь, вы говорите WP, что данный файл (имя которого должно быть зарегистрировано) должен быть поставлен в очередь (включен в вывод HTML).

Проблемав вашем случае FontAwesome не является зарегистрированным скриптом / стилем.Это просто часть другого файла CSS.Поэтому вам придется удалить весь этот файл из очереди и поместить весь другой код CSS из этого файла в ваш собственный файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...