GeneratePressテーマのカスタマイズ設定を取得する

2週間ぶりのGeneratePress記事でございます。
GeneratePressでは色や余白など様々なカスタマイズが出来る訳ですが、ここで設定した値をcssやphp側で使いたいケースがあります。「あそこで設定した色と同じものを使いたい!」というような状況ですね。
今回はこれらの値の取得方法について書いていこうと思います。

とはいえGeneratePressの設定項目は多岐にわたるので、どこにどんな設定項目があるのかは「generatepress/inc/defaults.php」にて確認をお願いします。こちらのファイルに各種設定の初期値が書いてありますので…(有料ライセンス、GP Premiumのファイルについては最後にまとめます)

それでは設定項目の値を取得する方法について。
まずはロゴ設定や文字色など、基本的な設定を取得するコードが以下になります。

$generate_settings = wp_parse_args(
	get_option('generate_settings', array()),
	generate_get_defaults());

$color = $generate_settings['link_color'];

1つ目の引数、get_optionで設定を配列で取得しています。
2つ目の引数、generate_get_defaultsで設定の初期値を同じく配列で取得しています。これは先ほど紹介したdefaults.phpで定義されている関数ですね。
最後にwp_parse_argsで結合します。あとは普通の配列と同じようにデータ名を指定して取り出すだけですね。

このような流れで、他の設定項目の値も取得することが出来ます。
ただし、get_optionの引数と初期値取得の関数が変わるので気を付けましょう。
以下は各設定の取得をまとめたものです。GP Premiumの機能についてはファイル箇所も併記しています。

// Colors
$color_settings = wp_parse_args(
	get_option('generate_settings', array()),
	generate_get_color_defaults());

// Typography
$font_settings = wp_parse_args(
	get_option('generate_settings', array()),
	generate_get_default_fonts());

// Padding
$spacing_settings = wp_parse_args(
	get_option('generate_spacing_settings', array()),
	generate_spacing_get_defaults());

// Blog (gp-premium/blog/functions/defaults.php)
$generate_blog_settings = wp_parse_args(
	get_option('generate_blog_settings', array()),
	generate_blog_get_defaults());

// Secondary Navigation (gp-premium/secondary-nav/functions/functions.php)
$generate_secondary_nav_settings = wp_parse_args(
	get_option('generate_secondary_nav_settings', array()),
	generate_secondary_nav_get_defaults());

// Sticky Navigation (gp-premium/menu-plus/functions/generate-menu-plus.php)
$generate_menu_plus_settings = wp_parse_args(
	get_option('generate_menu_plus_settings', array()),
	generate_menu_plus_get_defaults());

// Copyright
$copyright = get_theme_mod('generate_copyright');

コピーライトのように他と違う取得方法のものが混ざっているようなので、恐らく網羅できていないと思いますが…
ここに目当ての設定が見つからない場合は、GeneratePressとGP Premium全体をそれっぽいワードで検索すればいいと思います。そうすればいかにこの記事がソースコードから丸コピしてるか分かりますので…!

少々長くなりましたが今回はこれで以上となります。
次回はまたサイトに手を加えて書くことが出来た時にでも。それではまた。