フォーラムをリニューアルしました!
今後は、新フォーラムをご利用ください。
load_scripts.php と widget.php の関数の書き方について < ご要望
load_scripts.php と widget.php の関数の書き方について要望があります。
というのは、ウィジェットエリアのデザインをカスタマイズしたり、読み込むスクリプトを変更したりしたいからです。
現状下記の様な書き方をしていると思いますが、下記の状態だとカスタマイズしにくくて困っています。
add_action( 'hoge', function() { piyo; } );
下記例のような形に書き換えることでカスタマイズ性が向上するので、ウィジェットエリアと読み込むスクリプトの関数のみでも下記例のようにしていただければ幸いです。
例:
if ( ! function_exists( 'hoge' ) ) {
function hoge () {
piyo;
}
add_action( 'fuga', 'hoge' );
}
あまり変更されたくない部分なので、あえて無名関数を使用しています。
というのも、テーマのファイル構造などを整理してファイル名を変える可能性もあるので、テーマ機能の提供に必須なファイルを確実に読み込ませたいためです。
どうしても、それらの機能をオフにしたい場合などはフックを追加する形で上書き処理もできると思うのですが、いかがでしょうか...?
フィルターフック or アクションフックによる対応でよろしくお願いします。
ただし、ウィジェットエリアにおいて同じIDを適用することで内容の上書きが不可能な場合はウィジェットエリアの部分を関数から分離してオーバーライド可能な関数で再定義していただけたら幸いです。
P.S.
jQuery をフッターに移動するコードですが、現状のコードだとプラグインがヘッダーで jQuery に依存するコードを実行しようとした場合、jQuery も一緒に持ち上げられる現象が発生する可能性があります。
なので、下記のように wp_enqueue_script の処理を wp_footer で行う方が個人的には良さそうに思えます。
/**
* レンダリングブロックしているJavascriptの読み込みを遅らせる by 寝ログ
* https://nelog.jp/header-js-to-footer
*/
function move_scripts_head_to_footer_ex() {
// ヘッダーのスクリプトを取り除く.
remove_action( 'wp_head', 'wp_print_scripts' );
remove_action( 'wp_head', 'wp_print_head_scripts', 9 );
remove_action( 'wp_head', 'wp_enqueue_scripts', 1 );
// フッターにスクリプトを移動する.
add_action( 'wp_footer', 'wp_print_scripts', 5 );
add_action( 'wp_footer', 'wp_print_head_scripts', 5 );
add_action( 'wp_footer', 'wp_enqueue_scripts', 5 );
}
add_action( 'wp_enqueue_scripts', 'move_scripts_head_to_footer_ex' );
jQuery をフッターに移動するコードですが、現状のコードだとプラグインがヘッダーで jQuery に依存するコードを実行しようとした場合、jQuery も一緒に持ち上げられる現象が発生する可能性があります。
このことも理解していますが、これはプラグイン側の問題ですし、さすがに、プラグイン側がヘッダーで読み込もうとしているものをテーマ側からフッターへ強制するのはちょっと違うかなと...。
ウィジェットについては子テーマから追加できそうで、ウィジェットのデザインも納得いくデザインだったので(最悪 CSS で調整すれば良さそう)子テーマから修正することで対応します。
CSS & JS については wp_deregister_script や wp_deregister_style で対応したいと考えております。
お手間を煩わせてしまい申し訳ありませんでした。