今回はユーザーIDやカテゴリーネーム(に限らずですが)のハードコーディングはやめましょう!
という話をします。
ハードコーディングってなに?
どんな利点があるの?
といった初心者の方にもハードコーディングをやめる利点をお伝えできればと思います。
ハードコーディングとは
まずハードコーディングとはという話ですが、
本来プログラム中に記述すべきでないリソース(エラーメッセージなど)を、直接ソースコード中に埋め込むこと
Wikipediaより引用
ん??
なんのことだかわからない?
そんな方は今はさほど気にしないで記事を読み進めてください。
どんな時に使うの?
WordPressを利用していると、
ユーザーやカテゴリーごとに処理を分岐したい場合があります。
・ある特定カテゴリーページにのみ表示したいテキストがある
などです。
ハードコーディングをした場合にどのような書き方になるのかをまずはみてみましょう。
ある特定カテゴリーページにのみ表示したいテキストがある
TECHというカテゴリーページにおいては、
「TECH記事に興味のある方はこちらから」というメッセージを表示する。
ということをしたい場合、
category.phpにこんな記述をするはずです。
<?php if(is_category('tech')) : ?> <p>TECH記事に興味のある方はこちらから</p> <?php endif; ?>
今回は上のコードの中に登場している‘tech’というハードコーディング部分を取り除きましょう、
という話です。
どんなメリットがあるの?
セキュリティー面
サイトの閲覧者にユーザーIDやカテゴリーネーム(ID)などを直接開示することは、
セキュリティー上の大きなリスクとなります。
一箇所の修正で全ての変更が済む
これが最大のメリットです。
例えば、
さきほど登場した‘tech’というカテゴリー名を‘wordpress’に変更するとします。
その場合、
‘tech’というカテゴリー名にもとづく条件式をすべて変更する必要が生じます。
手間も多いし見落としの危険性も多いです。
では具体的にどうやってハードコーディングを避けることができるでしょうか?
ハードコーディングの避け方サンプル
ユーザーIDやカテゴリー名を1つのファイルで管理してくれる、
constants.phpのようなファイルを作ります。
<?php class Constants { // ユーザー const masterUserId = "1"; //管理者 const ippanUserId = "2"; //一般管理者 // カテゴリー const catTech = "tech"; //テック const catNews = "news"; //ニュース } ?>
呼び出したいときは、
1.constants.phpを読み込む
2.定数を呼び出す
の2ステップを踏みます。
constants.phpを読み込む
読み込むファイルとconstants.phpが同階層にある場合、
下のコードを記載すればconstants.phpに記載されている定数を利用できます。
<?php require_once("constants.php"); ?>
定数を呼び出す
先ほどのコードを改修すると、
<?php if(is_category(Constants::catTech)) : ?> <p>TECH記事に興味のある方はこちらから</p> <?php endif; ?>
となります。
‘tech’というカテゴリー名に基づく条件式が記述されているファイルが複数あった場合でも、
‘catTech’という定数で記述さえしておけば、
constants.phpの定数を変更するだけで全てのファイルに変更が伝わります。
さいごに
直接IDやカテゴリー名(カテゴリーID)を記載している人は、
これを機にハードコーディングから卒業してくれれば嬉しいです!