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円と、管理画面のカスタムフィールドの値を表示できています。
発売日の関数も設定してみましょう。
<!-- 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のコードを簡単にすることができます。


 
 




