リリイログ Written by Yumi Nakamura

【YouTube講座】WordPress開発講座 #07:本文に入力欄を追加できるカスタムフィールドを使おうの概要

積み上げ

WordPress開発講座 #07:本文に入力欄を追加できるカスタムフィールドを使おう

ワードプレスのカスタム3兄弟。
カスタムフィールド、カスタムポスト、カスタムタクソノミーについて紹介していきます。
今回は、カスタムフィールドについて勉強しましょう。

ワードプレスには、新規投稿画面には、タイトルを入力する所と、本文を入力する所があります。
タイトルと本文だけだと、思ったようなレイアウトができないことがあります。
オンラインショッピングなどでは、値段の更新を入力すれば、そのたびに、レイアウトが崩れてしまうことにもなります。
値段を入力する欄を作って、そこさえ入力すれば、レイアウトが崩れないようになります。

管理画面で、カスタムフィールドを作る

投稿〜新規追加〜右上3つの点 オプション 詳細パネル〜カスタムフィールドにチェックを入れます。

カスタムフィールドの入力欄が出てきます。
特殊な入力欄で、2つの入力エリアがあります。
名前は、カスタムフィールドのキー。
キーと値のコンビで、増やすことができます。

カスタムフィールドに、次の2つのコンビを作ってみました。
価格 1500
発売日 2020/09/09

カスタムフィールドは、値を入れても、そのままでは表示されません。
テンプレートファイルを変更しなければなりません。

single.php を編集して、カスタムフィールドのキーと値を表示する

single.php を編集します。

<!-- Post Content -->
  <article>
    <div class="container">
      <div class="row">
        <div class="col-lg-8 col-md-10 mx-auto">
          <?php the_content(); ?>
        </div>
      </div>
    </div>
  </article>

 

この中に、データ定義リストを入れます。

<!-- Post Content -->
  <article>
    <div class="container">
      <div class="row">
        <div class="col-lg-8 col-md-10 mx-auto">
          <?php the_content(); ?>
          <dl>
           <dt>価格</dt>
           <dd>1500円</dd>
           <dt>発売日</dt>
           <dd>2020年9月9日</dd>
           </dl>
        </div>
      </div>
    </div>
  </article>

 

<dt>価格</dt>
<dd>1500円</dd>
<dt>発売日</dt>
<dd>2020年9月9日</dd>を反映して、
投稿画面に、価格と発売日が表示されています。

カスタムフィールドの値を変更できるようにする

single.php にphp関数を書き込みます。

<!-- Post Content -->
  <article>
    <div class="container">
      <div class="row">
        <div class="col-lg-8 col-md-10 mx-auto">
        <?php the_content(); ?>
          <dl>
           <dt>価格</dt>
           <?php
           $price = get_post_meta(get_the_ID(), '価格', true); ?>
           <dd><?php echo $price; ?>円</dd>
           <dt>発売日</dt>
           <dd>2020年9月9日</dd>
          </dl>
        </div>
      </div>
    </div>
  </article>

関数を定義して、再読み込みして、表示させると、価格1500円と、管理画面のカスタムフィールドの値を表示できています。

get_post_meta
特定の投稿の特定のキーからカスタムフィールドの値を取得する関数です。
パラメータが、3つ必要です。

発売日の関数も設定してみましょう。

<!-- Post Content -->
  <article>
    <div class="container">
      <div class="row">
        <div class="col-lg-8 col-md-10 mx-auto">
          <?php the_content(); ?>
          <dl>
           <dt>価格</dt>
           <?php
           $price = get_post_meta(get_the_ID(),'価格',true);
            ?>
           <dd><?php echo $price; ?>円</dd>
           <dt>発売日</dt>
           <dd><?php
           $published = get_post_meta(get_the_ID(),'発売日',true);
            ?></dd>
           </dl>
        </div>
      </div>
    </div>
  </article>

発売日の値が表示されていません。コードを書き間違えていました。

⬇ 書き直しました。

<!-- Post Content -->
  <article>
    <div class="container">
      <div class="row">
        <div class="col-lg-8 col-md-10 mx-auto">
          <?php the_content(); ?>
          <dl>
           <dt>価格</dt>
           <?php
           $price = get_post_meta(get_the_ID(),'価格',true);
            ?>
           <dd><?php echo $price; ?>円</dd>
           <dt>発売日</dt>
           <?php
           $published = get_post_meta(get_the_ID(),'発売日',true);
            ?>
           <dd><?php echo $published; ?></dd>
           </dl>
        </div>
      </div>
    </div>
  </article>

今度は、表示されました。

カスタムフィールドに入れた 2020/09/09 が表示されています。

決まったフォーマッタに、データを入れたいといった場合に、使うことができます。

ワードプレスの標準のカスタムフィールドは、使いにくい所があります。
プラグインを入れてあげるとよいです。
プラグイン〜新規追加〜検索窓で、acf〜Advanced Costom Fieldを選びます。
詳しくカスタムフィールドを作り込むことができます。
このプラグインを使うと、single.phpのコードを簡単にすることができます。