【wordpress】カスタムフィールドの値の有無をチェックする

wordpress

ある案件で、descriptionを設定するにあたって各ページで設定したい場合どうすればいいのかをメモ。
ただし、プラグインでもあるが勉強のため、プラグインはなしの方向で。

カスタムフィールドの値の有無で表示を変えるといった場面で使えそう。

get_post_metaで値をチェック

方法としてはget_post_metaを使用して値を取得して変数に代入するのをif文でチェック。
値が存在すればtrueとなる方法である。

ID","description",true)){
?>
ID","description",true) ?>" />

" />

流れとしては、

  1. ダッシュボードでカスタムフィールドに「description」を追加して内容を入れる
  2. get_post_metaで「description」の値を取得してif文でチェック
  3. 存在した場合は、同じくget_post_metaで「description」の値をecho で出力。のし存在しなければbloginfoでデフォルトのdescriptionを出力。 *ダッシュボードの一般設定のキャッチフレーズの部分。

get_post_customを使用した方法

「get_post_custom」は、カスタムフィールド情報をすべて取得する関数(詳しくはこちら)なので、一度、情報を変数に代入してそこで「description」の値を取り出して値の有無をチェックする。


ID","description",true) ?>" />

" />

といった感じになります。

そのほかにカスタムフィールドの値を取得する

いろいろ方法があるみたいのなのでメモっとく。そのほかだと「get_post_custom_values($key);」の方法もあるみたいなのでとりあえず出力する方法をメモ。
ちなみにカスタムフィールドは同じフィールド名で複数値を登録できるので、下記のサンプルは最初の値を出力している。

//get_post_custom_valuesの場合
$custom=get_post_custom_values("description"); //descriptionの値を配列で取得
echo $custom[0];  //カスタムフィールド「description」の最初の値を出力

//複数だった場合
$custom=get_post_custom_values("description");
foreach($custom as $values){
echo $values;
}

//get_post_customの場合
$custom=get_post_custom();
$dis=$custom["description"];
echo $dis[0];

カスタムフィールドのキーと値を取得する

タイトルど通りキーと値を取得する場合はget_post_customでカスタムフィールド使用する

$value){
 echo $key;
 echo $value[0]; //ここは例えばリンク先というカスタムフィールドが複数あるが最初のデータを表示させたいときは
                 //配列アクセス演算子でアクセスする
}
?>

上記の記述だと全てのカスタムフィールドを取得するのでキーと値を出力すると下記のようなコードがでると思う


_edit_last 1
_edit_lock 1322444373:1
_thumbnail_id 22

カスタムフィールドのデフォルトで設定される値??かよく分からないが自分が設定した値を出力したい場合は邪魔なので_(アンダーバー)を基準に正規表現でチェックして省くようにする


$value){
if(!preg_match("/^_/",$key)){ //ここで_(アンダーバー)から始まるキーを省くようにする
 echo $key;
 echo $value[0];
}
}
?>