WordPress 6.5新增了字体库功能,使用户可以直接在编辑器里管理字体。此外,它还提供了一系列的API,这意味着开发者可以更灵活地控制和调整这项功能,甚至可以禁用它。
字体集
字体集是一系列你可以通过编辑器添加到网站的字体。在theme.json
中,这些字体系列被列为fontFamily
项目。默认情况下,在WordPress 6.5中,用户可以选择添加Google的一组字体。为了符合GDPR规定,安装Google字体时,这些字体文件会被下载到你的WordPress服务器上。
一旦注册了字体集合,用户就能在编辑器的字体库界面中看到它。在这里,用户可以安装并开始使用集合中的字体。
添加字体集
你可以使用wp_register_font_collection()
函数来添加新的字体集。这个过程包括用PHP或JSON格式定义字体系列和它们的列表,然后把这些信息作为数组的一部分传递给函数。
下面是一个示例,展示了如何在PHP中添加字体集合:
$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 );
请注意,字体集合数组里的name
和description
字段需要支持多语言翻译,你可以通过使用_x()
函数来包裹这些文本实现这一点。通常,字体系列的名称是不需要翻译的。想了解更多信息,请查阅讨论#60509。
字体集合中的font_families
字段可以使用本地路径或是指向JSON文件的远程URL来指定字体。
删除字体集
可以使用wp_unregister_font_collection()
函数禁用字体集合。这是禁用默认字体集合的示例:
add_action( 'init', function() {
wp_unregister_font_collection( 'default-font-collection' );
} );
安装和激活字体
在WordPress中,你可以通过theme.json
设置来配置字体。当你“安装”一个字体到你的网站,它的设置会被保存到数据库,这样任何主题都可以使用这个字体。
“激活”字体意味着它会被加入到主题的全局样式设置里。这样,新的字体就可以在网站的整体样式和单个块的设计中被使用了。
如果你换了一个新主题,你需要重新激活之前安装的字体,这样可以确保新主题的全局样式也会更新。如果你重置了主题的全局样式,所有之前安装的字体会被停用,但还会保留在网站上,你可以随时重新激活它们。
另外,字体库也允许你停用主题自带的字体,如果你不需要它们的话,这样可以帮助提高网站的加载速度。
自定义字体上传目录
默认情况下,上传的字体会保存到wp-content/fonts
文件夹里。但是,你可以使用font_dir
过滤器来改变这个保存位置,根据你的需求设定不同的目录。如果你的设置不允许修改wp-content
目录,那么wp-content/uploads/fonts
会被用作备用目录。
你可以用wp_get_font_dir()
函数来找出字体上传目录的具体位置。
下面这个例子会把字体目录改到WordPress的“Uploads”目录里(通常是wp-content/uploads
):
function alter_wp_fonts_dir( $defaults ) {
$wp_upload_dir = wp_get_upload_dir();
$uploads_basedir = $wp_upload_dir['basedir'];
$uploads_baseurl = $wp_upload_dir['baseurl'];
$fonts_dir = $uploads_basedir . '/fonts';
// Generate the URL for the fonts directory from the font dir.
$fonts_url = str_replace( $uploads_basedir, $uploads_baseurl, $fonts_dir );
$defaults['path'] = $fonts_dir;
$defaults['url'] = $fonts_url;
return $defaults;
}
add_filter( 'font_dir', 'alter_wp_fonts_dir' );
当你更改字体的上传位置时,请确保你选择的文件夹确实存在,并且具有正确的读写权限。
就像wp-content/uploads
文件夹一样,设置用于字体上传的文件夹也不会受到wp_is_file_mod_allowed
或DISALLOW_FILE_MODS
设置的影响,这意味着这些设置不会阻止字体的上传。
如何禁用字体库
默认情况下可通过编辑器访问字体库。
禁用用户界面
可以使用过滤器来禁用 UI 来自定义编辑器设置:
function disable_font_library_ui( $editor_settings ) {
$editor_settings['fontLibraryEnabled'] = false;
return $editor_settings;
}
add_filter( 'block_editor_settings_all', 'disable_font_library_ui' );
禁用REST API
该unregister_post_type()
函数可用于删除与字体库关联的帖子类型,并通过扩展 REST API:
add_action( 'init', function() {
unregister_post_type( 'wp_font_family' );
unregister_post_type( 'wp_font_face' );
} );
这样做可以让插件关闭字体库的功能,但同时保留界面,以管理当前主题所提供的字体。
新的 REST API
字体库功能新增了三个REST API端点:
wp/v2/font-collections
:用于获取预定义的字体系列列表,也就是“集合”。wp/v2/font-families
:用于获取父字体系列的信息,这些系列通常包含一种或多种单个字体。wp/v2/font-families/<id>/font-faces
:用于获取字体系列中每种字体的详细信息。
暂无评论内容