Объединение запросов Google Fonts не работает

Я работаю над сайтом, на котором мне нужно загрузить два шрифта Google. В попытке сделать все как можно эффективнее, я хотел бы объединить загрузку обоих шрифтов в один запрос. У меня никогда не было проблем с этим раньше. Google генерирует путь, и я всегда мог просто скопировать его в свой файл functions.php и зарегистрировать его там. Однако сделать то же самое на этот раз не получится. Синтаксис строки теперь также выглядит немного иначе. Раньше два шрифта в пути, который генерировал Google, разделяла вертикальная черта (|), но теперь ее нет. Если я разделю каждый шрифт на отдельный запрос, все будет работать нормально.

Первый приведенный ниже фрагмент кода — это то, как я пытаюсь зарегистрировать свои шрифты, используя ссылку, предоставленную Google, с обоими шрифтами, объединенными в один запрос.

function load_google_fonts() {
wp_register_style( 'my-google-fonts', 'https://fonts.googleapis.com/css2?family=Maven+Pro:wght@400;700&family=Open+Sans:wght@300;700' );
wp_enqueue_style( 'my-google-fonts' ); }
add_action( 'wp_enqueue_scripts', 'load_google_fonts' );

Я также пытался поставить '|' между 'family' и 'Open' в этой строке, поскольку я знаю, как раньше разделялись два шрифта в одном запросе. Там тоже не повезло.

Следующий фрагмент — единственный способ заставить шрифты загружаться правильно, то есть разделить их на несколько запросов.

function load_google_fonts() {
wp_register_style( 'my-google-fonts', 'https://fonts.googleapis.com/css2?family=Maven+Pro:wght@400;700' );
wp_register_style( 'my-google-fonts-2', 'https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;700' );
wp_enqueue_style( 'my-google-fonts' );
wp_enqueue_style( 'my-google-fonts-2' );
add_action( 'wp_enqueue_scripts', 'load_google_fonts' );

Что-то не так с комбинированной ссылкой, которую мне предоставляет Google? Если да, то что нужно изменить? Если нет, то что я делаю неправильно? Кто-нибудь еще сталкивался с этой проблемой раньше? Любая помощь будет очень высоко ценится.

Ваш первый пример кажется мне хорошим. Вроде все есть? fonts.googleapis.com/… Ознакомьтесь с документацией здесь Developers.google.com/fonts/docs/css2

rjdown 22.12.2020 20:53
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
1
856
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Обновлено:

После последнего обновления Google Font вам необходимо использовать следующую строку:

<link rel = "preconnect" href = "https://fonts.gstatic.com">

После выбора необходимых шрифтов в Google Fonts, вот фрагмент кода для встраивания, который они нам дают:

<link rel = "preconnect" href = "https://fonts.gstatic.com">
<link href = "https://fonts.googleapis.com/css2?family=Maven+Pro:wght@400;700&family=Open+Sans:wght@300;700&display=swap" rel = "stylesheet">

В настоящее время ВЫ загружаете свой шрифт, используя URL-адрес Google Fonts по умолчанию из панели URL-адресов. Оба не одинаковы (см. правильное объявление ниже).

Right = https://fonts.googleapis.com/css2?family=Maven+Pro:wght@400;700&family=Open+Sans:wght@300;700&display=swap.
Wrong = https://fonts.google.com/specimen/Maven+Pro?query=Maven&sidebar.open=true&selection.family=Maven+Pro:wght@400;700|Open+Sans:wght@300;700 .

Соответствующий фрагмент кода появится в правом столбце после того, как вы выберете шрифт на веб-сайте шрифтов Google.

Лучше всего загружать scripts, stylesheets и fonts из файла function.php.

Конечно, мы должны адаптировать фрагмент кода, предоставленный Google Font, к нашей среде Wordpress.

<?php
/**
* Theme scripts
*/
add_action( 'wp_enqueue_scripts', 'theme_scripts' );
function theme_scripts() {
  if ( ! is_admin() ) {

    /**
    * Register then enqueue google fonts
    */
    wp_register_style( 'google_fonts', 'https://fonts.googleapis.com/css2?family=Maven+Pro:wght@400;700&family=Open+Sans:wght@300;700&display=swap' );
    wp_enqueue_style( 'google_fonts' );
  };
}; ?>

При использовании CDN вы хотите быть уверены, что источник доступен. Мы можем использовать @fopen();, чтобы «проверить» наш URL-адрес и убедиться, что наш CDN работает, если нет, мы вернем резервный файл, размещенный на сервере нашего веб-сайта.

<?php
/**
* Theme scripts
*/
add_action( 'wp_enqueue_scripts', 'theme_scripts' );
function theme_scripts() {
  if ( ! is_admin() ) {

    /**
    * Register then enqueue google fonts
    *
    * Check if CDN's url is valid, if not return fallback
    */
    $test_google_fonts = @fopen( 'https://fonts.googleapis.com/css2?family=Maven+Pro:wght@400;700&family=Open+Sans:wght@300;700&display=swap', 'r' );
    if ( $test_google_fonts !== false ) {
      wp_register_style( 'google_fonts', '//fonts.googleapis.com/css2?family=Maven+Pro:wght@400;700&family=Open+Sans:wght@300;700&display=swap' );
    } else {
      wp_register_style( 'google_fonts', get_stylesheet_uri() . '/assets/font/_my_awesome_font_fallback_' );
    };
    wp_enqueue_style( 'google_fonts' );
  };
}; ?>

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

<?php
/**
* Theme scripts
*/
add_action( 'wp_enqueue_scripts', 'theme_scripts' );
function theme_scripts() {
  if ( ! is_admin() ) {

  /**
  * Register then enqueue google fonts
  */
  wp_enqueue_style( 'google_fonts', 'https://fonts.googleapis.com/css2?family=Maven+Pro:wght@400;700&family=Open+Sans:wght@300;700&display=swap' );
  };
}; ?>

Большое спасибо за ваш ответ. Я не знал, что не нужно сначала регистрировать скрипт, это очень хорошо знать. Однако я попробовал код, который вы предоставили, и у меня все еще есть та же проблема. Поправьте меня, если я ошибаюсь, но похоже, что ссылка, которую вы говорите, является правильной ссылкой, и та, что у меня есть в моем примере, - это та же ссылка, за исключением «display = swap» в конце, который Я думал, что не требуется. Я пропустил что-то еще? Может быть, есть другая проблема, вызывающая это? Кроме того, я заметил, что когда я загружаю комбинированную ссылку в <head>, шрифты загружаются просто отлично.

JB Slettebak 23.12.2020 18:45

Вчера работал с моей стороны на моем локальном сервере! display=swap НЕ единственная разница, присмотритесь. <link rel = "preconnect" href = "https://fonts.gstatic.com"> эта строка также предоставлена ​​Google Fonts, так что она, вероятно, требуется, может быть, это ваш header.php.

amarinediary 23.12.2020 18:53

Кроме того, если вы используете такой фреймворк, как Bootstrap, может возникнуть конфликт. Используйте объявление !important css, чтобы убедиться, что ваш шрифт применяется к вашему селектору.

amarinediary 23.12.2020 18:59

Я видел предварительное подключение, просто не думал, что оно требуется, так как его никогда не было раньше. Но я попробую. Я тоже попробую !важно. Спасибо за помощь!

JB Slettebak 23.12.2020 21:59

Предварительное соединение <link> казалось проблемой. Добавил в шапку и вдруг заработало. Еще раз спасибо!

JB Slettebak 23.12.2020 22:11

Для всех, кто сталкивается с этой проблемой, проблема заключалась в том, что я не добавил этот фрагмент в <head> внутри header.php.

<link rel = "preconnect" href = "https://fonts.gstatic.com">

Раньше этого не требовалось, и я точно не знаю, почему это нужно сейчас, но это решило мою проблему. Спасибо @amarinediary за то, что указал мне на это.

Другие вопросы по теме