为什么可以';我在WordPress functions.php中将多个Google字体排队吗?

为什么可以';我在WordPress functions.php中将多个Google字体排队吗?,php,css,wordpress,fonts,google-fonts,Php,Css,Wordpress,Fonts,Google Fonts,我正在使用wp\u排队\u样式排队。这是我的密码: wp_排队_风格('google字体','https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0400;0700;1400&family=Neuton:ital,wght@0,300;0400;0700;1400&display=swap',[]) 这在myfunctions.php文件中 但是,当我在加载的页面上查看源代码时,该字体文件的URL会被缩减为:&d

我正在使用
wp\u排队\u样式
排队。这是我的密码:

wp_排队_风格('google字体','https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0400;0700;1400&family=Neuton:ital,wght@0,300;0400;0700;1400&display=swap',[])

这在myfunctions.php文件中

但是,当我在加载的页面上查看源代码时,该字体文件的URL会被缩减为:&display=swap&ver=5.3.2


如您所见,第一个族参数在通过
wp\u enqueue\u样式输出后已被删除。有没有办法在不做任何黑客行为的情况下解决这个问题?我认为可能有一种过时的方法来为这两种字体创建URL,但我更希望能够使用Google现在提供的内容。我在
wp\u enqueue\u style
中的原始URL是由Google Fonts生成的供我嵌入的URL。

同一查询参数定义了两次(
family
),因此WordPress删除了一个。这在典型的上下文中是正常的:如果有重复的查询参数,则只使用最后一个。WordPress在对URL排队时使用此“规则”

我无法告诉您为什么谷歌字体更改了
|
分隔符的语法(比如:
https://fonts.googleapis.com/css?family=Montserrat|Neuton&display=swap
)添加到这个重复的
系列
参数中,但看起来可能是因为URL中的复杂性。有一件事是肯定的:这会引起一些麻烦,就像你现在遇到的一样。WordPress需要对此进行调整,或者Google字体必须更新/还原其URL语法。这种情况今天可能不会发生

在这种情况下,现在你最好自己修改,使用经典网站(在谷歌字体导航栏中)来构建你的字体URL。我知道你不会有那么多的选择(看起来你正在尝试使用可变字体,这太棒了!),所以这有点令人失望


您也可以下载这些文件并自行托管这些字体。在许多情况下,这也是一种性能提升。

这实际上与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 );
以“null”结尾将消除问题,因为WordPress不会尝试向URL添加任何附加参数,因此不会通过PHP的查询字符串处理函数运行URL


这可能会在未来的WordPress更新中更直接地解决。然而,不管怎样,在这些外部URL上没有版本都是有意义的。

这也是我的怀疑,但我想我会检查一下。我把这篇文章作为他们在谷歌字体网站上的反馈发送给他们,希望它能在他们的雷达上出现。我也会把它发送给WordPress。给他们打电话很好,希望他们能够解决这个问题。这应该是正确的答案,效果很好!谢谢汉克斯,我已经把这个标记为正确答案了,因为这对我来说很有效!