當(dāng)前位置:首頁>WordPress建站>WordPress開發(fā)>WordPress 6.5 新功能:字體庫 詳解

WordPress 6.5 新功能:字體庫 詳解

字體庫WordPress 6.5 中引入,允許用戶直接在編輯器中管理字體。它附帶了一組 API,允許開發(fā)人員控制、調(diào)整和禁用其行為。

字體集

字體集是用戶可以通過編輯器安裝的字體系列定義的列表。字體系列定義是theme.json格式中的一個(gè)fontFamily項(xiàng)。默認(rèn)情況下,WordPress 6.5 允許用戶選擇加入 Google 字體集合列表。為了讓網(wǎng)站保持GDPR合規(guī)性,安裝 Google 字體會(huì)將文件下載到 WordPress 服務(wù)器。

注冊(cè)字體集合后,它將出現(xiàn)在編輯器的字體庫UI中。從這里,用戶可以安裝并激活該集合中的字體。

WordPress 6.5 新功能:字體庫 詳解 - Screenshot

添加字體集

可以使用wp_register_font_collection()函數(shù)添加新的字體集合。這可以通過以PHP或JSON格式提供字體系列及其字體列表作為字體集合數(shù)組的一部分來完成。

以下是在 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 );

請(qǐng)注意, Font Collection 數(shù)組的namedescription字段必須是可翻譯的,這可以通過將字符串包裝在_x() 函數(shù)中來實(shí)現(xiàn)。字體系列名稱通常不被翻譯。有關(guān)更多信息和背景討論,請(qǐng)參閱#60509

該字段的 JSON 格式font_families可以是本地路徑或指向 JSON 文件的遠(yuǎn)程URL 。

刪除字體集

可以使用wp_unregister_font_collection()函數(shù)禁用字體集合。這是禁用默認(rèn)字體集合的示例:

add_action( 'init', function() {
	wp_unregister_font_collection( 'default-font-collection' );
} );

有關(guān)更多信息,請(qǐng)參閱#57980

安裝和激活字體

字體定義基于theme.json 格式進(jìn)行字體設(shè)置。將字體“安裝”到網(wǎng)站會(huì)將集合中的 theme.json 格式設(shè)置保存到數(shù)據(jù)庫中,因此可以為任何主題激活該字體。

當(dāng)字體被“激活”時(shí),主題的全局樣式設(shè)置將被更新,以便包含該字體以及主題定義的字體,并且可以在全局樣式和單個(gè)塊的版式設(shè)置中使用。

切換到新主題時(shí),需要重新激活已安裝的字體,以更新該主題的站點(diǎn)全局樣式設(shè)置。如果重置主題的全局樣式,這將停用所有已安裝的字體,但它們將保留在站點(diǎn)上,并且可以根據(jù)需要重新激活。

此外,字體庫可用于停用主題中包含的字體(如果不需要),以提高網(wǎng)站的加載性能。

自定義字體上傳目錄

請(qǐng)注意,以下一些詳細(xì)信息(例如函數(shù)名稱)可能在 6.5 版本之前發(fā)生更改。有關(guān)更多信息,請(qǐng)參閱#60751和古騰堡問題#59699

默認(rèn)情況下,字體將上傳到該wp-content/fonts目錄。但是,可以使用 font_dir?過濾器根據(jù)需要自定義該位置。對(duì)于不支持修改wp-content目錄的安裝,wp-content/uploads/fonts將用作后備目錄。

可以使用 wp_get_font_dir()返回字體上傳目錄的位置。

下面的示例將字體目錄更改為 WordPress “Uploads”目錄(默認(rèn)情況下為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' );

修改上傳位置時(shí),重要的是要確保所選位置存在并且設(shè)置了適當(dāng)?shù)淖x/寫權(quán)限。

wp-content/uploads目錄一樣,字體上傳目錄不會(huì)堅(jiān)持 wp_is_file_mod_allowed/DISALLOW_FILE_MODS 以防止字體上傳。

有關(guān)更多信息,請(qǐng)參閱#59417這篇文章

如何禁用字體庫

默認(rèn)情況下可通過編輯器訪問字體庫。

禁用用戶界面

可以使用過濾器來禁用 UI 來自定義編輯器設(shè)置:

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()函數(shù)可用于刪除與字體庫關(guān)聯(lián)的帖子類型,并通過擴(kuò)展 REST API:

add_action( 'init', function() {
   	 unregister_post_type( 'wp_font_family' );
   	 unregister_post_type( 'wp_font_face' );
} );

這允許擴(kuò)展程序禁用字體庫,同時(shí)保留用于管理活動(dòng)主題提供的字體的 UI。

有關(guān)更多信息,請(qǐng)參閱#55275#57818

新的 REST API

字體庫功能引入了三個(gè)新的 REST API 端點(diǎn):

有關(guān)每個(gè)新端點(diǎn)的詳細(xì)文檔,請(qǐng)參閱REST API 手冊(cè)#57616

聲明:本站所有文章,如無特殊說明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個(gè)人或組織,在未征得本站同意時(shí),禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺(tái)。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關(guān)注WordPress大學(xué)公眾號(hào) WPDAXUE
WordPress開發(fā)

在 WordPress 中添加自定義功能/函數(shù)的四種方法

2024-3-9 21:28:30

WordPress開發(fā)

Howdy:一個(gè)現(xiàn)代化 WordPress 插件開發(fā)框架

2025-2-15 17:14:55

0 條回復(fù) A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個(gè)人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

大城县| 娄底市| 托里县| 海城市| 张家口市| 甘南县| 广水市| 广饶县| 河北区| 平利县| 清徐县| 石城县| 定日县| 开原市| 武川县| 诏安县| 龙岩市| 巧家县| 天门市| 西充县| 峨山| 广西| 尼勒克县| 敦化市| 全南县| 吕梁市| 乌恰县| 民乐县| 龙陵县| 凤冈县| 淮阳县| 公主岭市| 刚察县| 天等县| 高唐县| 大石桥市| 尼玛县| 从化市| 福清市| 大埔区| 蒙山县|