私はシステムフォントやグーグルフォントを含む何百ものフォントフェースの10の大きなドロップダウン選択コンボボックスを持っています。すべてのコンボボックスは同じ値を持ちます。
上記の各ボックスには、言語とフォントの太さのセットをロードするためのコンボボックスが2つあります。選択されたフォントがGoogleのフォントである場合にのみ、これらは表示/アクティブになります。
私はjson_decode
を通してJSONファイルを通して選択リストのすべてのフォントフェースを得ています。以前は、System FontsとGoogle Fontsに別々のコンボボックスを使用していましたが、その作業は今よりも少し簡単になりました。
JSONファイルは以下のようなものです(ほんの一例)。
{
"fonts":[
"Arial",
"Helvetica",
"Georgia",
"Aclonica",
"Acme",
"Actor",
"Adamina",
"Advent Pro",
"Aguafina Script"
]
}
それから、JSONファイルからこれらすべての値を配列として取得するために関数(JSON_fontsと呼びます)を使用します。
$wp_customize->add_control( 'font_1',
array(
'label' => esc_html( 'Body Font', 'my_theme' ),
'section' => 'typography',
'type' => 'select',
'choices' => JSON_fonts()
)
);
(私はシステムフォントとグーグルフォントには別々のJSONファイルを使うべきだと思います)。
私がやりたいことは、選択ボックスのフォントにキーを割り当ててその種類を検出することです(システムフォントかGoogleか)。
選択した値がGoogleフォントの場合は、次のようになります。
キューに入れても問題ありませんが、フォントの種類と固有の値を取得するのは私にとって非常に問題があります。
wp-ajax
に依頼する。任意の助けは大歓迎です。また、複雑さレベルを下げるためにあなたの考えを自由に共有してください。
この質問は、Q&Aフォーマットで完全に答えるには広すぎますが、ここではおおまかに言っておきます。
$sys_fonts
配列にまとめます$ggl_fonts
という配列で集める$ggl_fontinfo
$sys_fonts
と$ggl_fonts
を配列$total_fonts
にマージする$total_fonts
を使うsys_fonts
通常の手順を使用 にある場合は、ページを再ロードせずにCSSを変更します。ggl_fonts
にある場合は、ggl_fontinfo
でバリアント(太字、斜体など)およびサブセット(言語)を検索するためのキーとして使用します。次に、フォームに フィールドを動的に追加 を入力します。すべて設定したら、必要なフォントファイルをggl_fontinfo
と 動的に読み込む でページに探します。スキルによっては、実装に数日かかることがあるので注意してください(これがカットアンドペースト対応の回答を無料で入手できない理由です)。
あなたができることはあなたの選択がこのようなものになるように、それぞれの選択key
にそれぞれのグーグルフォントのために接頭辞を加えることです:
$choices = array(
'_google_open_sans' => 'Open Sans',
'_google_titillium' => 'Titillium Web',
'arial' => 'Arial',
);
次に、選択したフォントのリストを調べていくと、キーの_google_
プレフィックスを確認するだけで済みます。 Web Font Loader を使用すると、更新せずにカスタマイザを更新できます。 選択的リフレッシュ に差し込むだけです。
ちょっと複雑すぎる?
私は実際に私がクライアントのために作ったテーマのために上記のアプローチを試みました。私はGoogle Fonts APIを使ってフォントのリストを取得し、それをキャッシュに入れ、それから事前に生成されたシステムフォントのリストと混ぜ合わせました。
しかし、最終的なシステムは少し面倒でした。各ドロップダウンを2つのテキストボックスに置き換えました。最初のものは(Titillium+Web:400,400i,600,600i
のように)実行するGoogleフォントのインポート文を指定し、2番目のものは("Titillium Web", Arial, sans-serif
のように)font-familyを指定しました。
これは私のクライアントにとっては本当に簡単でした。粗いドロップダウンをスキャンする代わりに、必要なものをコピー&ペーストするだけでした。これにより、フォントリストをキャッシュする必要もなくなりました。