拙著「WordPress Web開発逆引きレシピ」が発売されました。
WordPressの様々なカスタマイズについて、逆引きの形式で取り上げています。
PHP 7.0での動作確認も行っています。
AnotherCustomFieldsプラグインをダイナミック対応にする(その2)
昨日の記事で述べたように、DynamicMTMLには、個々のプラグインのconfig.yamlを読み込む処理が入っています。
この仕組みを利用すると、AnotherCustomFields用の各config.yamlファイルの情報を読み込むことができます。
1.すべてのプラグインのconfig.yamlを得る
まず、すべてのプラグインのconfig.yamlの情報をまとめて得ます。
これは、DynamicMTMLクラスの「stash」というメンバ関数で行うことができます。
stash関数は、DynamicMTMLクラスのプロパティに対するgetter/setterの働きをします。
先日の記事のように、DynamicMTMLクラスのオブジェクトを変数$appに割り当てたとします。
この場合、以下のように書くことで、すべてのプラグインのconfig.yamlの情報を得て、変数$cfgに代入することができます。
$cfg = $app->stash('plugins_config');
ただし、昨日の記事で述べたように、DynamicMTMLに標準で入っているspycだと、config.yamlの内容を正しく読み込めない場合があります。
spycをバージョン0.5にアップグレードすると、正しく読めるようになります。
2.個々のプラグインの情報を得る
上記の方法で得られた結果は、連想配列の形になっています。
個々の要素のキーが、各プラグインのIDです。
また、個々の要素の値が、各プラグインのconfig.yamlファイルの内容になります。
config.yamlファイルの内容は、PHPの連想配列に変換されます。
連想配列をたどって、config.yamlファイル内の個々の情報を得ることができます。
例えば、「acfsample」というIDのプラグインで、ブログ記事に「subtitle」というフィールドを追加したとします。
また、そのフィールドのテンプレートタグをMTEntrySubTitleにするようにしたとします(「tag: EntrySubTitle」と記述)。
上記のように変数$cfgにconfig.yamlの情報を割り当てた場合、subtitleフィールドのテンプレートタグ名は、以下で得ることができます。
$cfg['acfsample']['object_types']['entry']['subtitle']['acf']['tag']