VWSとは フォーラム Lightning Lightning の functions.php について

Lightning の functions.php について

このトピックには6件の返信が含まれ、2人の参加者がいます。4 ヶ月、 3 週間前 RICK さんが最後の更新を行いました。

7件の投稿を表示中 - 1 - 7件目 (全7件中)
  • 投稿者
    投稿
  • #15999

    RICK
    参加者

    Lightning の functions.php を眺めていたら外部ファイルの読み込み方について
    ふと疑問が湧いたので質問させていただきます。

    ① get_template_part と require が混在するのはなぜですか?

    ② get_parent_theme_file_path は get_theme_file_path ではだめなのですか?
    ↑上記のようにすれば子テーマでのカスタマイズが容易になるような気がしたので。

    以上回答していだけたら幸いです。

    #16010

    RICK
    参加者

    とりあえず、親テーマの

    /*-------------------------------------------*/
    /*	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を読み込むことに成功しました。

    #16063

    kurudrive
    キーマスター

    1も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 のバージョンは…そうですね…アップできるようにフックなど仕様検討します。

    • この返信は4 ヶ月、 4 週間前に  kurudrive さんが編集しました。
    #16067

    RICK
    参加者

    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対応の備えにはなると思います。

    #16130

    kurudrive
    キーマスター

    あと、もう一つ疑問があるので更に質問させていただきます。
    なぜ、下記のようなファイルの読み込み方をさせているのですか?
    functions.php → font-awesome-config.php → class-vk-font-awesome-versions.php

    これは font awesome versions が Lightning だけで利用しているものではないので、
    利用先の環境毎に変動する項目を config ファイルに書いています。
    直接読み込みでも動作はするのですが、その場合、ライブラリ(font awesome versions)に必要な項目がどこに書かれているかわからなくなりやすいので、congif ファイルに書くというルールで運用しています。

    #16131

    kurudrive
    キーマスター

    現状

    /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

    のような形にしたいと思っています。

    #16132

    RICK
    参加者

    厳密には

    /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 に対応していただければ
    もっと使いやすくなると思います。

    このトピックはこれにて解決済みとさせていただきます。
    お付き合いくださり誠にありがとうございました。

    • この返信は4 ヶ月、 3 週間前に  RICK さんが編集しました。
7件の投稿を表示中 - 1 - 7件目 (全7件中)

このトピックに返信するにはログインが必要です。