WordPressによるWEBサイト開発5 - 投稿タイプ・フィールド・タクソノミの追加

2012/05/25

WordPress

カスタム投稿タイプを使うには、本来functions.phpにコードを追加する必要がありましたが、今は投稿タイプ(post_type)の追加とタクソノミの追加は、プラグインCustom Post Type UIで、フィールドの追加はプラグインAdvanced Custom Fieldsで簡単に実現できます。

ジャカルタ

インドネシアのITサービス

インターネット技術の急速な発展と普及により、優秀なIT人材を輩出することで知られるジャカルタのビヌス大学(BINUS)やバンドゥンのバンドゥン工科大学、インドネシアコンピューター大学(UNIKOM)の学生の多くがインターネット・WEB業界やソフトウェア業界を志望するようです。

続きを見る

管理画面に投稿・固定ページ以外の入力フォームを追加

タクソノミを追加してしまえば、あとはカテゴリに項目を追加するのと同じように、タクソノミにも項目の追加ができます。

WordPress

WordPressによるWEBサイト開発1 - MVCモデル的な設計

投稿される情報をユーザー単位に時系列に保存し、「会計システム」「インドネシアの税法」というようなカテゴリ、または「PPN」「WordPress」というようなタグ単位にフィルタして表示できるのがWordpressの最大の強みであり、これらカテゴリやタグなどの投稿記事の切り口(分類)をタクソノミーと呼んでいます。

続きを見る

投稿タイプ(Custom Post Type UI)

商品カタログや不動産物件情報など、WEBサイトのコンテンツフォーマットに合わせて、プラグインからpost_typeを追加することで、管理画面に専用入力フォームを作成します。

  1. 投稿(post)・固定ページ(page)とは別の投稿タイプ(post_type)の入力画面を追加
  2. デフォルトでは「タイトル」と「本文」の2つだけなのでカスタムフィールドで入力項目追加

フィールド(Advanced Custom Fields)

デフォルトの投稿記事や固定ページ、カスタム投稿フォームに入力フィールドを追加し、WordPressのクエリで出力する関数を提供してくれます。

  1. フィールドグループ(仕様詳細)と属するフィールド群(サイズ・価格・画像など)を定義
  2. フィールドグループと投稿タイプ(投稿・固定ページ・カスタム投稿タイプ)を紐付け
  3. テンプレートタグecho get_post_meta($post->ID, 'カスタムフィールド名', true)で出力(第三引数はtrueが文字列、falseが配列)
  4. Advanced Custom Fields関数であるthe_field('フィールド名')で出力

タクソノミ(Custom Post Type UI)

カテゴリとタグの違いは階層化の可否ですが、投稿記事でしか使えないので、カスタム投稿をカテゴリのように階層化するにはカスタムタクソノミを使います。

投稿記事を分類化するということは、カテゴリ項目(会計システム・生産管理システム etc.)を投稿に紐付けるということであり、同じようにカスタム投稿を分類化するには、まず分類自体をタクソノミとして定義してから、タクソノミ項目をカスタム投稿に紐付けます。

  1. タクソノミ(ブランド)を定義し、投稿タイプ(投稿・固定ページ・カスタム投稿タイプ)に紐付け
  2. タクソノミ(ブランド)に項目(ロレックス・セイコーなど)を追加
  3. 新規カスタム投稿時にタクソノミの項目を選択

Advanced Custom Fieldの関数でフィールドの値を取得

カスタムフィールドの値は、テンプレートタグget_post_meta()関数で取得可能です。

<?php echo get_post_meta($post->ID, 'price', true); ?>

通常はカスタムフィールド作成プラグインの定番Advanced Custom Field関数を使用します。

数値・テキスト

基本はthe_field()関数で表示、get_field()関数で取得します。

<?php the_field('price'); ?>
<?php echo get_field('price'); ?>

画像

WordPressで画像を挿入したときに、オリジナルのサイズ以外にサムネイル・中・大の3種類のファイルが自動生成され、メディアとして保存されます。

get_field()関数で画像から取得できる$imageは画像IDです。

$image=get_field('picture');  //画像ID
$url=$image['size']['medium']; //中サイズ画像URL
$width=$image['size']['medium-width']; //中サイズ画像横幅
$height=$image['size']['medium-height']; //中サイズ画像縦幅

チェックボックス

チェックボックスの値は配列で取得しますので、例えば自動巻き、クォーツ、手巻きという3つのチェックボックスの配列の値を取得します。

$spring=get_field('spring');
foreach($bed as $key=>$value){
	echo $value;
}