美妙社  ›  WordPress

WordPress 6.5 新功能:字体库 详解

DivivitYan听音乐 WP教程 2024-4-3 23:25:11167 次点击 阅读模式     
字体库 在 WordPress 6.5 中引入,允许用户直接在编辑器中管理字体。它附带了一组 API,允许开发人员控制、调整和禁用其行为。  a4 L# H8 C1 [$ _

: T: a8 g  U3 H* t+ i/ S/ N字体集
字体集是用户可以通过编辑器安装的字体系列定义的列表。字体系列定义是theme.json格式中的一个fontFamily项。默认情况下,WordPress 6.5 允许用户选择加入 Google 字体集合列表。为了让网站保持GDPR合规性,安装 Google 字体会将文件下载到 WordPress 服务器。
注册字体集合后,它将出现在编辑器的字体库UI中。从这里,用户可以安装并激活该集合中的字体。
wp-65-font-library.jpg 7 w6 m5 b" [7 E
1 B/ @8 W0 k+ P. P' H

, i$ M7 \/ \/ Q添加字体集
可以使用wp_register_font_collection()函数添加新的字体集合。这可以通过以PHP或JSON格式提供字体系列及其字体列表作为字体集合数组的一部分来完成。
以下是在 PHP 中添加字体集合的示例:
  1. $font_families = [
    8 o7 L0 S, T! t' |/ A
  2.         array(6 _+ W% h# m( D0 M" n
  3.                 'font_family_settings' => (
    ) i4 {% o7 A2 J( e- i0 x
  4.                         array (9 @& `5 T  Q* T# c
  5.                                 'fontFamily' => 'Open Sans, sans-serif',/ H, ?% q1 u) i/ C7 w. u% K
  6.                                 'slug'       => 'open-sans',  c$ _! Y8 J8 \, U
  7.                                 'name'       => 'Open Sans'," o' U  p% r" }/ v$ e2 `
  8.                                 'fontFace'   => (, P; _1 h6 @+ [- c# \
  9.                                         array (
    : C! x! @% J# H
  10.                                                         'fontFamily' => 'Open Sans',
    " R& p  n/ s+ `' {4 ]
  11.                                                         'fontStyle'  => 'normal',  _# X# n4 f; K; L" u
  12.                                                         'fontWeight' => '300',+ m5 @9 ^& L+ B! [; ^# @
  13.                                                         'src'        => 'https://fonts.gstatic.com/s/opensans/v40/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4iY1M2xLER.woff2'9 ^3 x. O% n% J: y& K* j' {* n
  14.                                         ),
    6 z' X7 L0 L5 h8 v, v
  15.                                         array (' H8 F% P- A# y" \
  16.                                                         'fontFamily' => 'Open Sans',
    * e- n0 I2 g( _% c1 y8 A: ?. C
  17.                                                         'fontStyle'  => 'italic',
    6 j+ h/ g! J) b( D4 O% }8 n
  18.                                                         'fontWeight' => '400',
    9 K& d- k3 Z6 g' V6 B4 @5 N- D
  19.                                                         'src'        => 'https://fonts.gstatic.com/s/opensans/v40/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVIUwaERZjA.woff2'
    . D3 M" `: J7 J
  20.                                         ),  {. b9 H6 f/ a) W3 M* W
  21.                                 ),
    7 }6 j$ M2 M* ^; B
  22.                         ),
    9 J  M$ t0 A7 w7 W
  23.                 ),% y3 }. u4 Y# ?8 t1 k# {
  24.                 'categories' => [ 'sans-serif' ],2 J8 P5 q- D+ d* p) \1 K5 m# D
  25.         ),% T, x% [; `5 l' s( V3 g
  26.         array(
    $ G0 N5 V: S1 A( Y
  27.                 'font_family_settings' => (  B- K7 b0 P; {; g$ q7 g
  28.                         array (
    ) x( A6 G: [3 d
  29.                                 'fontFamily' => 'Monoton, system-ui',
    3 ~7 j" h" k5 j3 C
  30.                                 'slug'       => 'monoton',* f' [7 x7 N$ o) r1 m( j
  31.                                 'name'       => 'Monoton',
    2 s6 P5 i$ f& h* m* l
  32.                                 'fontFace'   => (/ E6 H( c1 o8 ]9 M- d7 G- |0 M
  33.                                         array (
    + D8 s0 ?+ J% w3 b! _
  34.                                                         'fontFamily' => 'Monoton',
    ( e# G: R5 {7 p4 D% d% z' d
  35.                                                         'fontStyle'  => 'normal',
    + G' Q: \" a3 E2 x, ]0 ^* Y
  36.                                                         'fontWeight' => '400',4 I6 V, ~, f  E$ Q. `
  37.                                                         'src'        => 'https://fonts.gstatic.com/s/monoton/v19/5h1aiZUrOngCibe4fkPBQ2S7FU8.woff2',! T# _7 R  l7 |3 P
  38.                                                         'preview'    => 'https://s.w.org/images/fonts/17.7/previews/monoton/monoton-400-normal.svg'+ J( X: ^- e" n1 r) Y  Q. E& O
  39.                                         ),
    5 I3 Z0 }/ e6 g; S* H
  40.                                 ),
    ; P6 R2 F) X! F: G0 q
  41.                         )3 }4 f! B/ T) a/ b
  42.                 ),
    1 J7 b" ]* E! l' ~
  43.                 'categories' => [ 'display' ],
    9 Q3 C* I5 y! @9 ]% k5 t
  44.         ),
    " r) d# Z& T3 A& G4 [! U. a2 i
  45.         array(
    & M' B/ b! b3 f  @# X' G5 F  `
  46.                 'font_family_settings' => (7 s2 G( F, c/ [! X5 V. E8 c& K
  47.                         array () l+ f% L8 P$ I5 I3 H- F: m
  48.                                 'fontFamily' => 'Arial, Helvetica, Tahoma, Geneva, sans-serif',
    % ~0 z* h, f8 E/ L
  49.                                 'slug'       => 'arial',, @# p* F9 y8 e4 @" ~
  50.                                 'name'       => 'Arial',
    * x0 @" X4 }0 s1 j$ N8 v
  51.                         )* {2 c8 A9 z4 m; @. h4 z; T
  52.                 ),
    5 n9 _" ]7 C1 S" \- e/ k
  53.                 'categories' => [ 'sans-serif' ],
    9 C9 C; V. Q8 T" S3 r$ c  N
  54.         ),  e( S( [& M- \$ k3 @7 m. B
  55. ];1 _  q" M3 p$ n8 \1 |& J; t
  56.         . r1 v: S/ b: ~2 I
  57. $categories = [
    5 F& Z5 B! d* Z
  58.         array(4 r7 R& o8 D9 u) w3 r
  59.         'name' => _x( 'Display', 'Font category name' ),) {# u4 n6 {! B" T
  60.                 'slug' => 'display',
    - D5 I: u! H) c& B8 x, p8 j
  61.         )," c) m8 x9 ~1 f5 N) L* I# o5 Y
  62.         array(
    ! J3 f" v8 C1 g) ^
  63.                 'name' => _x( 'Sans Serif', 'Font category name' ),# v0 }! U) O- P' d* c
  64.                 'slug' => 'sans-serif',# H- O  J! O" C7 _
  65.         ),* i# r7 Q, J& v* j) z
  66. ];
    " ^! ]& ^0 l3 d3 F$ S6 ]; \; F8 ^6 c+ I
  67. $config = array (+ o( {. ~( I: X6 N
  68.         'name'          => _x( 'My font collection', 'Font collection name' ),
    % N0 F8 G1 @- ]! v+ s
  69.         'description'   => _x(  'A collection of my favorite fonts.', 'Font collection description' ),
    9 }) F' }' a; a7 I& X
  70.         'font_families' => $font_families,: \9 f; s* A3 x0 t5 @
  71.         'categories'    => $categories,
    ) }6 }0 J, r1 k4 S7 W( X! U
  72. );) Y5 \4 k5 q$ {% _: K* W7 t5 l
  73. wp_register_font_collection ( 'my-font-collection', $config );
复制代码
请注意, Font Collection 数组的name和description字段必须是可翻译的,这可以通过将字符串包装在_x() 函数中来实现。字体系列名称通常不被翻译。有关更多信息和背景讨论,请参阅#60509
该字段的 JSON 格式font_families可以是本地路径或指向 JSON 文件的远程URL 。
2 {: Y: X+ c  T) k$ ~4 Y( T9 @
删除字体集
可以使用wp_unregister_font_collection()函数禁用字体集合。这是禁用默认字体集合的示例:
  1. add_action( 'init', function() {
    * M* l7 I6 C" z0 x
  2.         wp_unregister_font_collection( 'default-font-collection' );
    ' m; `! T" ]( R* O4 I
  3. } );
复制代码
有关更多信息,请参阅#57980
2 n. z! k5 c3 T, `' o0 K; z% _
安装和激活字体
字体定义基于theme.json 格式进行字体设置。将字体“安装”到网站会将集合中的 theme.json 格式设置保存到数据库中,因此可以为任何主题激活该字体。
当字体被“激活”时,主题的全局样式设置将被更新,以便包含该字体以及主题定义的字体,并且可以在全局样式和单个块的版式设置中使用。
切换到新主题时,需要重新激活已安装的字体,以更新该主题的站点全局样式设置。如果重置主题的全局样式,这将停用所有已安装的字体,但它们将保留在站点上,并且可以根据需要重新激活。
此外,字体库可用于停用主题中包含的字体(如果不需要),以提高网站的加载性能。

! D/ n$ d* J. F/ \3 N自定义字体上传目录
请注意,以下一些详细信息(例如函数名称)可能在 6.5 版本之前发生更改。有关更多信息,请参阅#60751和古腾堡问题#59699
默认情况下,字体将上传到该wp-content/fonts目录。但是,可以使用 font_dir 过滤器根据需要自定义该位置。对于不支持修改wp-content目录的安装,wp-content/uploads/fonts将用作后备目录。
可以使用 wp_get_font_dir()返回字体上传目录的位置。
下面的示例将字体目录更改为 WordPress “Uploads”目录(默认情况下为wp-content/uploads):
  1. function alter_wp_fonts_dir( $defaults ) {1 F" {6 s) M! e& b$ Y+ |
  2.         $wp_upload_dir = wp_get_upload_dir();
    5 t% v8 h/ E" w0 }9 @0 X. p
  3.         $uploads_basedir = $wp_upload_dir['basedir'];
    ! P" Z- X. c( H$ r. P5 ^" W
  4.         $uploads_baseurl = $wp_upload_dir['baseurl'];8 C3 w) P- ?- ?
  5.         $fonts_dir = $uploads_basedir . '/fonts';
    ' ?9 y: U# z9 @
  6.         // Generate the URL for the fonts directory from the font dir.
    5 j  V2 P3 _% g' Y+ Q' E' B7 N
  7.         $fonts_url = str_replace( $uploads_basedir, $uploads_baseurl, $fonts_dir );
    ' f# V6 l9 z9 x" c  L
  8.         $defaults['path'] = $fonts_dir;
    " D7 k! B4 h  b& a6 I- s  ]1 K
  9.         $defaults['url']  = $fonts_url;4 d/ T, N+ c+ _) ^' V) F
  10.         return $defaults;. h) {! Q' @, E4 c' e, g0 D
  11. }, q+ g/ f7 I1 t
  12. add_filter( 'font_dir', 'alter_wp_fonts_dir' );
复制代码
修改上传位置时,重要的是要确保所选位置存在并且设置了适当的读/写权限。
与wp-content/uploads目录一样,字体上传目录不会坚持 wp_is_file_mod_allowed/DISALLOW_FILE_MODS 以防止字体上传。
有关更多信息,请参阅#59417这篇文章
7 k' _2 t- C( b3 G# e
如何禁用字体库
默认情况下可通过编辑器访问字体库。

8 U) ]& Y+ Y6 y" j4 s禁用用户界面
可以使用过滤器来禁用 UI 来自定义编辑器设置:
  1. function disable_font_library_ui( $editor_settings ) { ; V0 @0 E2 [( s0 V* x; }7 I, J6 |$ c( T
  2.             $editor_settings['fontLibraryEnabled'] = false;, y9 A" ]: u7 c7 ?; u: f5 i
  3.             return $editor_settings;
    ( N' E3 F" l, v! m" g! U7 C
  4. }
    5 i* d  F1 y- r0 d; o
  5. add_filter( 'block_editor_settings_all', 'disable_font_library_ui' );
复制代码
禁用REST API
该unregister_post_type()函数可用于删除与字体库关联的帖子类型,并通过扩展 REST API:
  1. add_action( 'init', function() {
    / h/ M8 H7 a7 Q: O, Y
  2.             unregister_post_type( 'wp_font_family' );1 W4 C7 C8 q* B9 ?" ~* h
  3.             unregister_post_type( 'wp_font_face' );$ G2 T, X, v, f1 {
  4. } );
复制代码
这允许扩展程序禁用字体库,同时保留用于管理活动主题提供的字体的 UI。
有关更多信息,请参阅#55275#57818

8 W; R' q; n% H/ _新的 REST API1 W+ F+ @1 Y0 J5 s+ }
字体库功能引入了三个新的 REST API 端点:
有关每个新端点的详细文档,请参阅REST API 手册#57616

' N5 I1 m8 p- K% _. R2 Z  H
9 g6 a& t5 K9 B" g3 p, d/ O: k. _2 ^
啊舒服sdf
目前尚无回复
添加一条新回复
您需要登录后才可以回帖 登录 | 立即注册

本节点积分规则
站点统计  ·  手机版  ·  小黑屋  ·  帮助  ·  Archiver  ·  手机版  ·  小黑屋  ·  17 人在线  最高记录 291  ·  TOP
愿孤独的人都会唱歌,愿漂泊的人都有酒喝!
World is powered by solitude
GMT+8, 2024-5-18 12:50, Processed in 0.347557 second(s), 185 queries .

  Inspire by v2ex, Powered by Discuz! X3.5, Template by MeiMiaoShe.Com, © 2001-2024 Discuz! Team.