WordPress 6.5 版本新增了字体库功能,让用户可以直接在编辑器中管理字体。这个功能还提供了一组 API,让开发者可以控制、调整和禁用字体库的行为。
字体集
字体集就是一系列用户可以通过编辑器安装的字体列表。在WordPress 6.5中,这些字体系列是通过theme.json格式中的一个fontFamily项来定义的。默认情况下,WordPress 6.5允许用户从Google字体集合列表中进行选择。但是要注意,为了确保网站符合GDPR规定,安装Google字体会将文件下载到WordPress服务器上。
一旦注册了字体集合,它就会在编辑器的字体库UI中显示出来。用户可以从这里方便地安装并激活所需的字体。
添加字体集
你可以使用wp_register_font_collection()函数来添加新的字体集合。这可以通过在字体集合数组中以PHP或JSON格式提供字体系列及其字体列表来完成。
以下是一个在PHP中添加字体集合的示例:
请注意,Font Collection数组中的name和description字段需要支持翻译,可以通过将字符串包裹在_x()函数中来实现。通常情况下,字体系列名称不需要翻译。关于此话题的更多信息和背景讨论,请参阅#60509。
在JSON格式中,字段font_families可以是本地路径,也可以是指向远程URL的JSON文件。
删除字体集
你可以通过使用wp_unregister_font_collection()函数来禁用字体集合。以下是禁用默认字体集合的示例:
有关更多信息,请参阅#57980。
安装和激活字体
字体设置是基于theme.json格式的字体定义。当你在网站上“安装”字体时,它会把这些设置保存到数据库中,这样任何主题都可以使用这些字体。
一旦字体被“激活”,主题的整体样式将被更新,以包含这些字体。你可以在全局样式和单个块的版式设置中使用这些字体。
当你切换到新主题时,需要重新激活已安装的字体,这样新主题才能使用这些字体的样式。如果你重置了主题的全局样式,所有已安装的字体将被停用,但它们仍然保留在网站上,并且可以根据需要重新激活。
此外,你也可以利用字体库来停用主题中包含的字体,这样可以提高网站的加载速度。
$font_families = [
array(
'font_family_settings' => (
array (
'fontFamily' => 'Open Sans, sans-serif',
'slug' => 'open-sans',
'name' => 'Open Sans',
'fontFace' => (
array (
'fontFamily' => 'Open Sans',
'fontStyle' => 'normal',
'fontWeight' => '300',
'src' => 'https://fonts.gstatic.com/s/opensans/v40/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4iY1M2xLER.woff2'
),
array (
'fontFamily' => 'Open Sans',
'fontStyle' => 'italic',
'fontWeight' => '400',
'src' => 'https://fonts.gstatic.com/s/opensans/v40/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVIUwaERZjA.woff2'
),
),
),
),
'categories' => [ 'sans-serif' ],
),
array(
'font_family_settings' => (
array (
'fontFamily' => 'Monoton, system-ui',
'slug' => 'monoton',
'name' => 'Monoton',
'fontFace' => (
array (
'fontFamily' => 'Monoton',
'fontStyle' => 'normal',
'fontWeight' => '400',
'src' => 'https://fonts.gstatic.com/s/monoton/v19/5h1aiZUrOngCibe4fkPBQ2S7FU8.woff2',
'preview' => 'https://s.w.org/images/fonts/17.7/previews/monoton/monoton-400-normal.svg'
),
),
)
),
'categories' => [ 'display' ],
),
array(
'font_family_settings' => (
array (
'fontFamily' => 'Arial, Helvetica, Tahoma, Geneva, sans-serif',
'slug' => 'arial',
'name' => 'Arial',
)
),
'categories' => [ 'sans-serif' ],
),
];
$categories = [
array(
'name' => _x( 'Display', 'Font category name' ),
'slug' => 'display',
),
array(
'name' => _x( 'Sans Serif', 'Font category name' ),
'slug' => 'sans-serif',
),
];
$config = array (
'name' => _x( 'My font collection', 'Font collection name' ),
'description' => _x( 'A collection of my favorite fonts.', 'Font collection description' ),
'font_families' => $font_families,
'categories' => $categories,
);
wp_register_font_collection ( 'my-font-collection', $config );
自定义字体上传目录
请注意,在6.5版本之前,某些详细信息(例如函数名称)可能已经发生了变化。你可以查阅#60751和古腾堡问题#59699。以获取更多信息。
默认情况下,上传的字体将存储在wp-content/fonts目录中。不过,你可以使用font_dir过滤器根据需要自定义这个位置。对于那些不支持修改wp-content目录的安装,将会使用wp-content/uploads/fonts作为备用目录。
你可以使用wp_get_font_dir()函数来获取字体上传目录的位置。
以下示例将字体目录更改为WordPress的“Uploads”目录(默认为wp-content/uploads):
当修改上传位置时,重要的是确保所选位置已存在并设置了适当的读/写权限。
和wp-content/uploads目录一样,字体上传目录也不受wp_is_file_mod_allowed/DISALLOW_FILE_MODS的限制,允许字体上传。
如何禁用字体库
默认情况下,你可以通过编辑器轻松访问字体库。
禁用用户界面
你可以通过使用过滤器来关闭编辑器设置的自定义界面。
禁用REST API
使用unregister_post_type()函数可以删除与字体库相关联的文章类型,并且可以通过扩展REST API来实现。
这样做可以让扩展程序在保留用于管理当前主题字体的用户界面的同时禁用字体库功能。
新的 REST API
字体库功能引入了三个新的REST API端点:
- wp/v2/font-collections – 提供预定义字体系列列表的端点,也就是所谓的“集合”。
- wp/v2/font-families – 提供父字体系列的端点,通常包含一种或多种字体(也就是单个字体)。
- wp/v2/font-families/<id>/font-faces – 提供特定字体系列中各个字体的端点。
暂无评论内容