カスタムフィールドの使い方をシンプルに教えます。一度覚えれば一生使えますので一緒に勉強していきましょう。
カスタムフィールドとは
ブログの今日の一言とかを作るのに良いです。ブログ記事の抜粋部分とかサブタイトルを入れたりと、別枠で好きな枠組みを作れるのでアイディア次第でいろいろ作れます。分からない方はこれを読むとカスタムフィールドが何かに着いて理解できるかもしれません。
簡単なカスタムフィールドの使い方
管理画面のどこにカスタムフィールドを使うところがあるの?
デフォルトで表示されてたり、されてないかもしれません、まずは画像のように表示オプションからカスタムフィールドが有効になっていることを確認します。
下に行くとカスタムフィールド欄が出現
これがカスタムフィールド欄です。
カスタムフィールドに何か入力します
左側はカスタムフィールドの名前、右側は値を入れます。今日の一言を実装するなら画像のように、左側は今日の一言と入力し、右側は一言を入力します。日本語が使えます。
テーマファイルに出力タグを書きます
以下のタグを貼ると今日の一言が出力されます。変更点は今日の一言の部分だけです。あなたが「今日の一言」ではなく「今日の感謝」と入力したのなら、ここを変更しましょう。
1 | <?php echo get_post_meta($post->ID, '今日の一言', true); ?> |
ブラウザから確認すると一言が表示されます
これであなたもカスタムフィールドを使って WordPress をカスタマイズできます。他にもたくさん値を入れたらこの用量で増やしていけば良いです。
簡単なカスタムフィールド複数の値を入れた使い方
他にもたくさんならこの方法でも構いませんが、例えば「今日の一言」が1個ではなく、2個だったり10個だったりする日もあるかもしれないです。そういう場合の対応方法を説明します。
同じ名前でカスタムフィールドを好きなだけ作る
画像のように同じ名前で追加します。これはいくつでも構いません。
テーマファイルに出力タグを書く
以下のタグを貼ると今日の一言がある分だけ出力されます。
1 2 3 4 5 6 | <?php $field = get_post_meta($post->ID, '今日の一言', false); foreach($field as $value) { echo $value . '<br>'; } ?> |
ブラウザから確認すると一言が表示されます
一つならひとつだけ出力されるし便利です。
何も入力されていない場合に対応する応用編(データの内容を知る)
先ほどの実装ではある程度動きますが、複数の場合何も入力されていなければエラーが発生します。カスタムフィールドの値がどのようになっているかを理解して、何があっても動作するように作りこみましょう。
値の確認方法を知る
どんな値が返ってくるかは print_r() というコマンドを使うと見ることができます。とりあえず今回は以下のようにすれば見ることができますので、どんな値が入ってくるかを試して確認しましょう。
1 2 3 4 | <?php $field = get_post_meta($post->ID, '今日の一言', true); print_r($field); ?> |
ひとつだけ出力する方法の場合
何か入力していれば以下のような値が入ります。
1 | テキストテキスト |
何も入力されていなければ以下のように何も値が返ってきません。false とかそういうのが返ってくるわけではないので、特にエラーなく何も出力されないという結果になります。
1 |
複数出力する方法の場合
1 2 3 4 | <?php $field = get_post_meta($post->ID, '今日の一言', true); print_r($field); ?> |
何か入力されていれば配列というのでデータが入ってきます。
1 2 3 4 5 | Array ( [0] => 今日はとても天気がよいので転勤しようかな。 [1] => ステキなステッキ! ) |
何も入力しなければ以下のように何も入りません。
1 2 3 | Array ( ) |
何も入力されていない場合に対応する応用編(実践)
どんなデータが入ってくるか分かりましたので、これに合わせてプログラムを書いてみましょう。ここからは PHP についての知識が少しだけ必要です。いろんなやり方がありますが、私で簡単な例を書いておきましたので使ってみてください。
ひとつだけの時に何も入力されていないときにメッセージを出す
カスタムフィールドから値を取り出し、空欄でなければ値を出力、値がなければ値がないというメッセージを出力します。これを貼りつければ。
1 2 3 4 5 6 7 8 | <?php $field = get_post_meta($post->ID, '今日の一言', true); if($field != '') { echo $filed; } else { echo '今日の一言はありま温泉。'; } ?> |
何か入力されていれば以下のように出力されますが。
何も入力されていなければ以下のように出力されます。
複数の時に何も入力されていないときにメッセージを出す
配列の数を数えて、1つ以上入っていれば配列の中身を全て出力、1つも入っていなければ何も入ってなかったとメッセージを出します。これを貼りつけると。
1 2 3 4 5 6 7 8 9 10 | <?php $field = get_post_meta($post->ID, '今日の一言', false); if(count($field) > 0) { foreach($field as $value) { echo $value . '<br>'; } } else { echo '今日の一言はひとつもありません。'; } ?> |
複数入力されていれば以下のように。
ひとつ入力されていれば以下のように。
何も入力されていなければ以下のように成ります。
おわりに
なるべく噛み砕いてみましたが、伝わってるでしょうか。カスタムフィールド面倒くさそうだと思ってる人は、序盤で説明したコードでもいいから使ってみて、WordPress ともっと仲良くなれたら良いですね。
コメント