以前にメールフォームプロCGIのWordPressでの設置方法を書きました。
前回までの内容ではCGIでプログラムに必要なスクリプトの読み込みをヘッダテンプレート内に記述するため、例えばフォームが必要なのはお問い合わせのページだけだったとしても、トップページその他不必要なページにまで書き出してしまいます。
表示速度やクローラビリティを考えるとヘッダ内はシンプルにしたいものです。
プログラムに必要な記述を整理する
メールフォームプロCGIには以下のCSSとjsが必要です。
<link rel="stylesheet" href="http://example.com/cgi/mailformpro/commons/mailform.css" type="text/css" />
<script type="text/javascript" src="http://example.com/cgi/mailformpro/commons/jQuery.js" charset="UTF-8"></script>
<script type="text/javascript" src="http://example.com/cgi/mailformpro/commons/mfp.lang.js" charset="UTF-8"></script>
<script type="text/javascript" src="http://example.com/cgi/mailformpro/commons/mfp.extensions.js" charset="UTF-8"></script>
<script type="text/javascript" src="http://example.com/cgi/mailformpro/commons/mailform.js" charset="UTF-8"></script>
<script type="text/javascript" src="http://example.com/cgi/mailformpro/postcodes/get.cgi" id="mfp2zip" charset="UTF-8"></script>
これをheader.phpに書き加えると、当然、すべてのページに出力されてしまいます。
必要なページのみにロードする
該当ページのカスタムフィールドを使うなど、いろんな方法があるのですが、今回は直感的に分かりやすくheader.phpに記述します。
その上でPHPのif文(条件分岐)を使って指定ページにのみ出力してしたいと思います。
<?php if(is_page(array('form','392'))): ?>
<link rel="stylesheet" href="http://example.com/cgi/mailformpro/commons/mailform.css" type="text/css" />
<script type="text/javascript" src="http://example.com/cgi/mailformpro/commons/jQuery.js" charset="UTF-8"></script>
<script type="text/javascript" src="http://example.com/cgi/mailformpro/commons/mfp.lang.js" charset="UTF-8"></script>
<script type="text/javascript" src="http://example.com/cgi/mailformpro/commons/mfp.extensions.js" charset="UTF-8"></script>
<script type="text/javascript" src="http://example.com/cgi/mailformpro/commons/mailform.js" charset="UTF-8"></script>
<script type="text/javascript" src="http://example.com/cgi/mailformpro/postcodes/get.cgi" id="mfp2zip" charset="UTF-8"></script>
<?php endif; ?>
一番最初の(‘form’,’392′)はページスラッグformとページID=392のときに以下を読み込むという指示になります。スラッグとIDどちらでも指定できます。
プラグインでは多くの場合はwp_head
で読み込まれるので、こういった制御はできませんが、自分でhead内にカスタマイズして出力させる、かつ、特定ページにしか必要ないという状況では重宝すると思います。