webfeelfree

WordPressのショートコードで記事の好きなところに定型文を挿入!差し替え!一括管理!

img_2014101601
記事の好きなところに、ある程度パターン化してしまった定型文や、常に挿入したいSNSへのリンク、そして、広告バナーなどなど、管理するときに便利なコードを紹介します。

ヘッダー部やフッター部だと、直接テーマを編集すれば、一括して管理できます。
しかし、記事中の好きな位置だと、なかなか一括した管理が難しそうなので、これは便利なコードじゃないかなぁ~と思いました。

functions.phpには注意

コードを紹介する前に、すごく重要な注意点を書きます。

コードは、functions.phpというファイルに書き込みます。
このfunctions.phpファイルは、曲者ファイルで、コードにエラーがあるとサイト(WordPress自体)が、真っ白に表示されてしまうことがあります。
なので、functions.phpの編集の時は、とても注意が必要です。

ある程度スキルが必要そうなので、今回は、「functions.phpファイルを編集できる人向け」の記事と、勝手ながら位置づけしたいと思います。

もし、チャレンジして、サイトが真っ白になってしまったという人は、FTPソフトなどでfunctions.phpファイルを、一度ダウンロードして、修正して、アップロードしなおして、functions.phpファイルを上書きすれば、直るかと思います。

こんなときこそ、焦らずに・・・。

定型文を出力するコードを作成

ということで、ベースとなるコードです。
一番簡単で、基礎的なショートコードと、どこかのサイトで紹介されていました。

//定型文1
function template01(){
 return '
  定型文
 ';
}
add_shortcode('demo01', 'template01');

1行目は、コメントアウト。
「//」をつけることで、コメントアウトになります。
必要なければ削除しても良し、分かりやすいように説明やコメントを書くのも良しです。

2行目からメインのPHPコードになります。

3~5行目で、定型文を設定します。
定型文には、HTMLタグも使うことができます。
「’(シングルクォーテーション)」もしくは「”(ダブルクォーテーション)」で囲みましょう。

‘(シングルクォーテーション)」と「”(ダブルクォーテーション)」の違いは、下で補足します。

2行目と7行目にある「template01」や「demo01」は、任意の名前を付けます。

ただし、2行目、7行目の「template01」に当たる部分は、同じ関数(function)名になるように名前をつけてください。

また、7行目の「demo01」・・・こちらは、実際に、記事の好きなところに埋め込む時に使うショートコード名になります。

ショートコードの書き方と実行例

設定した定型文を使用するときは、記事中に、ショートコード名を入れます。

[demo01]

のように、設定したショートコード名を「[]」で囲んで、書き込みます。
そうすると、functions.phpで設定した定型文に置き換わります。

説明してきたコードで、実行例を挙げますと

ここに[demo01]が入ります。

と、記事として、入力したとしましょう。

先ほど「定型文を出力するコードを作成」のところで、functions.phpに「定型文」という文字を、定型文として設定しましたよね。

なので、実際の表示は

ここに定型文が入ります。

というように変換されて、表示されます。

シングルクォーテーションとダブルクォーテーションの違い

ほんの少し突っ込んだPHPの話になります。

紹介してる記事によっては、定型文の囲みに「’(シングルクォーテーション)」ではなく「”(ダブルクォーテーション)」で紹介している記事があります。

もちろん、どちらも正しく、正常に動きます。

違いは・・・

・シングルクォーテーション・・・文字列中の変数を展開しない
・ダブルクォーテーション ・・・文字列中の変数を展開する

ということです。

文字やHTMLタグで構成した定型文の場合は、「’(シングルクォーテーション)」を使い、変数を使用している場合には、「”(ダブルクォーテーション)」を使いましょう。

ただし、定型文の囲みに使った引用符を、定型文で使わないよう注意が必要です。
少し、ややこしいので例をどうぞ。

NG

return "
 <a href="#">リンク1</a>
 <a href="#">リンク2</a>
 ";

例えば、リンクのURLは、大体の方は「”(ダブルクォーテーション)」で囲みますよね?

その時に、定型文全体を囲む引用符を「”(ダブルクォーテーション)」にしてしまうとエラーになってしまう場合があるということです。
「”(ダブルクォーテーション)」が、重複しているとマズいという感じです。

OK

return '
 <a href="#">リンク1</a>
 <a href="#">リンク2</a>
 ';

この場合、どちらか一方の引用符を「’(シングルクォーテーション)」にしましょう。

まだまだ、勉強不足なので、他の回避方法があると思いますが、ご了承のほどを・・・。

定型文を複数設定する場合

もちろん、複数の定型文を設定することができます。

//定型文1
function template01(){
 return '
  最新情報は<a href="#">Twitter(@webfeelfree)</a>をチェック
 ';
}
add_shortcode('demo01', 'template01');
//定型文2
function template02(){
 return '
  アフィリエイトや広告のコードを入れる
 ';
}
add_shortcode('demo02', 'template02');

その場合は、ズラズラとコードを書き足していけばOKです。

注意するところは、functions.phpファイル内全体で、関数(function)名とショートコード名が、バッティングしないように気をつけましょう。

あとがき

functions.phpファイル自体の扱いが、ちょっとだけ難しい感じですが、コード自体は、シンプルで使いやすいと思います。

functions.phpとショートコードで管理することによって、定型文を挿入することが楽になります。
特に、定型文を変更したいときには、functions.php側を変更するだけで、挿入したショートコードの定型文が、一気に変更されるので便利です。

地味に役に立ちそうなコードでした。

参考
定型文を出力するショートコードを使う | 西沢直木のIT講座
文字列 – シングルクォーテーション と ダブルクオーテーション – PHP入門 – Webkaru

最新記事

読まれている記事

ツイッター

カテゴリー