Lightning の functions.php について
Lightning の functions.php について
タグ: functions.php, Lightning, get_template_part, require, get_parent_theme_file_path, get_theme_file_path
- このトピックには6件の返信、2人の参加者があり、最後にDRILL LANCERにより5年、 6ヶ月前に更新されました。
-
投稿者投稿
-
2019年4月21日 9:07 PM #15999
DRILL LANCERモデレーターLightning の functions.php を眺めていたら外部ファイルの読み込み方について
ふと疑問が湧いたので質問させていただきます。① get_template_part と require が混在するのはなぜですか?
② get_parent_theme_file_path は get_theme_file_path ではだめなのですか?
↑上記のようにすれば子テーマでのカスタマイズが容易になるような気がしたので。以上回答していだけたら幸いです。
2019年4月22日 6:42 AM #16010
DRILL LANCERモデレーターとりあえず、親テーマの
/*-------------------------------------------*/ /* Load Font Awesome /*-------------------------------------------*/ require get_parent_theme_file_path( '/inc/font-awesome-config.php' );
を
/*-------------------------------------------*/ /* Load Font Awesome /*-------------------------------------------*/ require get_theme_file_path( '/inc/font-awesome-config.php' );
に変更して、
- /inc/font-awesome-config.php
- /inc/font-awesome/class-vk-font-awesome-versions.php
を親テーマと同じディレクトリ構造になるよう子テーマにコピーし、
子テーマ側のファイルの中身とコード部分の5.6.0を5.8.1に変更したところ
5.8.1のfontawesomeを読み込むことに成功しました。2019年4月23日 2:58 PM #160631も2も理由は同じなのですが以下のものは require / get_parent_theme_file_path にしています。
* 子テーマでカスタマイズされるとバージョンアップで致命的なトラブルを引き起こす可能性がある
* もともとプラグインとして実装したものを持ってきたもので、子テーマでコードをカスタマイズされた時の事をほとんど想定していない or 確認していないfontawesome などのライブラリの部分も、現在 config ファイルが inc/ ディレクトリにだらだら並んでいるので状態なので、各ライブラリディレクトリの中にもう一階層掘って fontawesomeディレクトリの中にconfigファイルを置くような形式に変更しようと思っています。
そうなると、新しいfunctions.phpでは以前(現状)と違う階層のconfigファイルを読み込みいに行くので、子テーマで新たに置いてあるconfig.phpが読み込まれなくなって、「カスタマイズしたのに効かなくなった」という不具合を引き起こす事になります。Lightningも構造的に多々問題がある & 構築当初は問題がなくても時代の変化に応じて構造変更が必要になるけれど、
何でも子テーマなどで上書きできてしまうと、「良くないのは把握していても既存ユーザーにトラブルが発生するから変更できない」という蓄積が早くなってしまうので、そういった事をなるべく避けるために、あえてストレートにはカスタマイズできない状態のままにしておいて、「fontawesomeのバージョンを上げたい」というような声をキャッチアップしてから、フックを用意するとか、子テーマでのファイル改変を想定した仕様変更を行いたいと考えています。get_template_part と require が混在するのはそういった理由です。
なので、本体の仕様上カスタマイズしにくい箇所は一度ご連絡いただけると幸いです。
fontawesome のバージョンは…そうですね…アップできるようにフックなど仕様検討します。
- この返信は5年、 6ヶ月前に石川@Vektor,Inc.が編集しました。
2019年4月23日 4:50 PM #16067
DRILL LANCERモデレーターfontawesome などのライブラリの部分も、現在 config ファイルが inc/ ディレクトリにだらだら並んでいるので状態なので、各ライブラリディレクトリの中にもう一階層掘って fontawesomeディレクトリの中にconfigファイルを置くような形式に変更しようと思っています。
現状
/inc/font-awesome-config.php /inc/font-awesome/class-vk-font-awesome-versions.php
の状態のものが
/inc/font-awesome/font-awesome-config.php /inc/font-awesome/class-vk-font-awesome-versions.php
となるいうことですか?
確かにこれならincディレクトリはすっきりしそうですね。あと、もう一つ疑問があるので更に質問させていただきます。
なぜ、下記のようなファイルの読み込み方をさせているのですか?
functions.php → font-awesome-config.php → class-vk-font-awesome-versions.php
下記のような読み込み方をすればもっとすっきりしそうなものですが・・・
functions.php → class-vk-font-awesome-versions.php
これもプラグイン時代の名残なのでしょうか?あえてストレートにはカスタマイズできない状態のままにしておいて、「fontawesomeのバージョンを上げたい」というような声をキャッチアップしてから、フックを用意するとか、子テーマでのファイル改変を想定した仕様変更を行いたいと考えています。
現状カスタマイズしたいのは
- ヘッダー
- カスタマイザーCSSを含む。
- fontawesome
くらいですね。
カスタマイザーについては下記記述を消した上で
if ( isset( $options['sidebar_position'] ) && $options['sidebar_position'] === 'left' ) { $dynamic_css .= '@media (min-width: 992px) { .siteContent .subSection { float:left;margin-left:0; } .siteContent .mainSection { float:right; } }'; }
各テンプレートに下記を記述する形に変更したいです。(デザインに影響は出ません。)
<?php if ( lightning_is_frontpage_onecolumn() ) { $main_col = 'col-md-12'; } elseif ( isset( $options['sidebar_position'] ) && $options['sidebar_position'] === 'left' ) { $main_col = 'col-md-8 col-md-push-4'; $side_col = 'col-md-4 col-md-pull-8'; } else { $main_col = 'col-md-8'; $side_col = 'col-md-4'; } ?>
ちなみに、Bootstrap4では
<?php if ( lightning_is_frontpage_onecolumn() ) { $main_col = 'col-lg-12'; } elseif ( isset( $options['sidebar_position'] ) && $options['sidebar_position'] === 'left' ) { $main_col = 'col-lg-8 order-lg-2'; $side_col = 'col-lg-4 order-lg-1'; } else { $main_col = 'col-lg-8'; $side_col = 'col-lg-4'; } ?>
と書き換えればOKなのでBS4対応の備えにはなると思います。
2019年4月28日 5:48 PM #16130あと、もう一つ疑問があるので更に質問させていただきます。
なぜ、下記のようなファイルの読み込み方をさせているのですか?
functions.php → font-awesome-config.php → class-vk-font-awesome-versions.phpこれは font awesome versions が Lightning だけで利用しているものではないので、
利用先の環境毎に変動する項目を config ファイルに書いています。
直接読み込みでも動作はするのですが、その場合、ライブラリ(font awesome versions)に必要な項目がどこに書かれているかわからなくなりやすいので、congif ファイルに書くというルールで運用しています。2019年4月28日 5:50 PM #16131現状
/inc/font-awesome-config.php
/inc/font-awesome/class-vk-font-awesome-versions.php
の状態のものが/inc/font-awesome/font-awesome-config.php
/inc/font-awesome/class-vk-font-awesome-versions.php
となるいうことですか?
確かにこれならincディレクトリはすっきりしそうですね。概ねそういう意味です。
厳密には
/inc/font-awesome/font-awesome-config.php /inc/font-awesome/packages/class-vk-font-awesome-versions.php
のような形にしたいと思っています。
2019年4月28日 9:07 PM #16132
DRILL LANCERモデレーター厳密には
/inc/font-awesome/font-awesome-config.php /inc/font-awesome/packages/class-vk-font-awesome-versions.php
のような形にしたいと思っています。
ということは将来的にはvektor-wp-librariesと同じ構造になるということですね。
P.S.
フックについては最低シングルトンに対応していただければ十分だと思います。
でも、できれば get_template_part や get_theme_file_path や get_theme_file_uri に対応していただければ
もっと使いやすくなると思います。このトピックはこれにて解決済みとさせていただきます。
お付き合いくださり誠にありがとうございました。- この返信は5年、 6ヶ月前にDRILL LANCERが編集しました。
-
投稿者投稿
- このトピックに返信するにはログインが必要です。