セッションを知ったらひらめいた。
どういうアレか
世の中のウィジェットは指定のタグを入れたら表示される。
WPを作る上で任意のページに任意のコンテンツを挿入したい、使いまわしたいときがある。都度コピペするのもいいのだけど、修正が入ったときに漏れるとめんどい。ウィジェットみたいにしたい。それをやっていく一つの方法。
考え方
wpといえばphpなわけで、htmlの外部ファイル化はinclude()とかで解決する。
コンテンツの作成にあたりcssやらjsを使うことになるんだけど、これをどうするか。<script>も<link>も<head>以外に書いても発火してくれるんだけど、汚くなるからそこのところはちゃんとしたい。だからって常時読み込むのも不要な通信が発生するわけでもったいない。
以前の記事の通り、セッションを扱うことで条件分岐させる方法がある。
これを活用して、includeに合わせて必要ファイルを読み込もうという寸法。
やっていく
セッションを拾ったら必要ファイルを読み込ませる。
<?php
function add_headFiles() {
if(is_admin()) return;
if($_SESSION['widget'] == true):
wp_enqueue_style('widget', get_template_directory_uri() .'/css/widget.css', array());
wp_enqueue_script('widget', get_template_directory_uri() .'/js/widget.js', array());
wp_enqueue_script('widget_ini', get_template_directory_uri() .'/js/widget_ini.js', array());
endif;
}
add_action('wp_enqueue_scripts', 'add_headFiles');
includeしたら中身がそのまま挿入されるんで、htmlやら必要なものを書く。
<p>widget</p>
呼び出しはこんな感じ。
<?php $_SESSION['widget'] = true; ?>
<?php get_header(); ?>
︙
<?php get_template_part('parts/widget');?>
︙
ちょっとめんどいのがセッションの記述で、get_header()より手前、厳密にはwp_head()より手前に仕込む必要がある。そうでないと、処理は上から順番に行われるわけで、セッション取得→条件分岐→セッション設定になってしまう。
includeといいながらget_template_partを使ってるけど、読み込めるなら何でもいいです。
もっと楽な方法はある
何をして楽かという話になるけど、今回の内容は記述箇所がたくさんある。設置に関してはそこまで手間じゃないけど、準備や調整を考えるとややこしい。
プラグインみたいにコンテンツの諸々を独立させたほうがぶっちゃけスムーズなんで、後々を考えたら今回の内容はそれほど上手いことはできてない。と、思う。
コメント