【WordPress】meta_valueの値を取得する方法メモ

不動産サイトを作っている際に、一覧ページで投稿の「価格」だけを取得したかったので、色々やってみた。

以下のコードはスラッグを取得するのですが、

<?php echo get_post($wp_query->post->ID)->post_name; ?>

この「post_name」を変更していきます。

phpMyAdminで確認してみると、価格は「kakaku」というmeta_keyが割り当てられています。

2015-12-06_08h12_08

ということで「post_name」を「kakaku」に変更し、ループ内に記載してみます。

<?php echo get_post($wp_query->post->ID)->kakaku; ?>

2015-12-06_08h20_55

出力されました。

ですがこれだとカンマがないので、ちょっと見づらいです。

そこでPHPの関数「number_format()」を利用します。カスタムフィールド取得の関数「get_post」を更に囲みます。

<?php echo number_format(get_post($wp_query->post->ID)->kakaku); ?>

2015-12-06_08h26_50

となりました。

あとは「円」とかをつければ一旦完了ですね。

注意

この書き方ですと、金額の入力がない場合はエラーが表示されてしまいます。

ですのでif文で「入力がない場合」の対処を追記する必要があります。

その場合は、

<?php $abc = get_post_meta($post->ID, 'kakaku', true);?>
<?php if(empty($abc)):?>
<!-- 本来ここに代替する内容を記載しますが、今回は特に代替する内容はないのでここを空にします -->
  <?php else:?>
<?php echo number_format(get_post_meta($post->ID,'kakaku',true));?>
<?php endif; ?>

こちら。

1行目で「$abc」が「kakaku」の事を指しているという一文を書き、2行目で「empty($abc)」つまり空だった場合とし、「else」それ以外の場合、として条件分岐させています。

これで価格の入力がない場合何もしません。

ちなみに

<?php if(empty($abc)):?>

これは

<?php if($abc ===''):?>

と同じ意味です。

« »