the*_*ann 15 css php wordpress fonts google-fonts
我正在使用这个 Google 字体文件wp_enqueue_style排队。这是我的代码:
wp_enqueue_style( 'google-fonts', 'https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0,400;0,700;1,400&family=Neuton:ital,wght@0,300;0,400;0,700;1,400&display=swap', [] );
这是在我的functions.php 文件中。
但是,当我在加载的页面上查看源代码时,该字体文件的 URL 被缩减为:https : //fonts.googleapis.com/css2?family=Neuton%3Aital%2Cwght%400%2C300%3B0%2C400% 3B0%2C700%3B1%2C400 &display=swap&ver=5.3.2
可以看到,第一个family参数在通过wp_enqueue_style. 有没有办法在不做任何黑客行为的情况下解决这个问题?我认为可能有一种过时的方法来为两种字体系列构建 URL,但我宁愿能够使用 Google 现在提供的内容。我里面的原始网址wp_enqueue_style是 Google Fonts 生成的供我嵌入的网址。
Ott*_*tto 31
这实际上与 PHP 及其解析查询参数的方式有关。
https://www.php.net/manual/en/function.parse-str.php
在任何情况下,当前的解决方法是将“null”传递给 version 参数,以使 WordPress 不向 URL 添加“ver”。
wp_enqueue_style( 'google-fonts', 'https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0,400;0,700;1,400&family=Neuton:ital,wght@0,300;0,400;0,700;1,400&display=swap', [], null );
Run Code Online (Sandbox Code Playgroud)
结尾的“null”将消除该问题,因为 WordPress 不会尝试向 URL 添加任何其他参数,因此不会通过 PHP 的查询字符串处理函数运行它。
这可能会在未来的 WordPress 更新中更直接地解决。但是,无论如何,在这些外部 URL 上没有版本是有意义的。
相同的查询参数定义了两次 ( family),因此 WordPress 删除了一个。这在典型的上下文中是很正常的事情:如果有重复的查询参数,则只使用最后一个。WordPress 在对 URL 进行排队时利用了这个“规则”。
我无法告诉您为什么 Google Fonts 将语法从|分隔符(如 : https://fonts.googleapis.com/css?family=Montserrat|Neuton&display=swap)更改为这个重复family参数,但看起来可能是因为您在 URL 中看到的复杂性。有一件事是肯定的:这会造成一些麻烦,就像你现在遇到的那样。要么 WordPress 需要为此进行调整,要么 Google Fonts 必须更新/恢复其 URL 语法。这可能不会在今天发生。
在这种情况下,您现在最好自己进行更改,通过使用经典站点(在 Google 字体导航栏中)来构建您的字体 URL。我知道你不会得到那么多的选择(看起来你正在尝试使用可变字体,这太棒了!),所以有点令人失望。
或者,您可以下载文件并自行托管这些字体。在许多情况下,这也是一种性能提升。