パソコン・スマホ備忘録

パソコン、スマホ、マイコン、家電などの備忘録と日記

WordPress 備忘録

WordPressでカスタム投稿タイプとカスタムフィールドを使ってみる

2017/02/19

スポンサーリンク

WordPressでカスタム投稿タイプを使ってみました。

やり方はプラグインを使う方法とfunction.phpで定義する方法があります。今回は備忘録を兼ねてfunction.phpで定義してみました。

function.phpを編集してカスタム投稿タイプを追加する

まずは簡単に新着情報を書くためのカスタム投稿タイプを定義します。function.phpの適当なところに以下のコードを書き込み更新します。

/* カスタム投稿タイプを追加 */
add_action( 'init', 'create_post_type' );
function create_post_type() {
	register_post_type( 'news', //カスタム投稿タイプ名を指定
		array(
			'labels' => array(
			'name' => __( '新着情報' ),
			'singular_name' => __( '新着情報' )
		),
		'public' => true,
		'has_archive' => true, /* アーカイブページを持つ */
		'menu_position' =>5, //管理画面のメニュー順位
		'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'custom-fields' ,'comments' ), 
    	)
	);
}

更新に成功すると管理画面からカスタム投稿の「新着情報」が表示されます。

カスタム投稿タイプでカテゴリ分けしたい場合は「タクソノミー」を使います。function.phpにさらに下記のようなコードを追加します。

register_taxonomy(
  'example_taxonomy',  // 追加するタクソノミー名(英小文字とアンダースコアのみ)
  'example',  // どのカスタム投稿タイプに追加するか
  array(
    'label' => 'テストタクソノミー',  // 管理画面上に表示される名前(投稿で言うカテゴリー)
    'labels' => array(
      'all_items' => 'タクソノミー一覧',  // 投稿画面の右カラムに表示されるテキスト(投稿で言うカテゴリー一覧)
      'add_new_item' => '新規タクソノミーを追加'  // 投稿画面の右カラムに表示されるカテゴリ追加リンク
    ),
    'hierarchical' => true  // タクソノミーを階層化するか否か(子カテゴリを作れるか否か)
  )
);

これでカスタム投稿タイプができましたので、今度はフィールドを入力しやすいようにカスタム投稿フィールドを使ってみます。

カスタムフィールドつ使ってみる

カスタムフィールドはWordPressの機能をそのまま使っても可能ですが、毎回同じフィールドを追加するならばプラグインを使って特定したほうが使いやすいと思います。カスタムフィールドを追加するプラグインは「Advanced Custom Fields」や「Custom Field Template」があります。今回は「Advanced Custom Field」にしてみたいと思います。「Advanced Custom Fields」は専用のカスタムフィールド表示用のテンプレートを作らないと表示できないようです。

Advanced Custom Fields」の利点はカテゴリーでもタクソノミー(カスタム分類)でもカスタムフィールドを表示できることです。ANDやORで細かい条件分岐もできます。

通常の「投稿」でフィールドを追加した場合は、単一記事の投稿「single.php」の中に入れます。「single.php」から「<?php while ( have_posts() ) : the_post(); ?>」という部分を探してその下に入れてあげます。

            <?php while ( have_posts() ) : the_post(); ?>
 <!- カスタムフィールド開始->
ページに表示するタイトル:<?php the_field('フィールド名',$post->ID); ?>
ページに表示するタイトル:<?php the_field('フィールド名',$post->ID); ?>
<!- カスタムフィールド終了->

しかしこのまま「single.php」を変更する方法では、記事の差別化ができませんので「single.php」をコピーして名前を変更しオリジナルのものを作ると良いようです。

カスタム投稿タイプに「Advanced Custom Fields」を使ってフィールドを追加する

カスタム投稿タイプに「Advanced Custom Fields」を使ってフィールドを追加するにはダッシュボードメニューの「カスタムフィールド」内の位置「ルール」の中で指定します。

設定した後「公開」ボタンを押せば、カスタム投稿タイプにフィールドが追加されます。

次にカスタム投稿タイプのカスタムフィールドを「表示」してみます。

カスタム投稿タイプのカスタムフィールドの表示

カスタム投稿タイプのテンプレートを使って表示します。WordPressで使われるテンプレートには優先順位があります。

個別のページ

  1. single-投稿タイプ名.php
  2. single.php
  3. singular.php
  4. index.php

アーカイブ

  1. archive-投稿タイプ名.php
  2. archive.php
  3. index.php

今回のように「news」というカスタム投稿タイプを作った場合、個別ページを「single-news.php」、アーカイブページを「archive-news.php」というテンプレートを利用します。存在しない場合はそれぞれ次の順位の「single.php」や「archive.php」が使われることになります。

具体的には以下のものを作って表示させます。

archive-news.php カスタム投稿タイプ「news」のアーカイブページ
single-news.php カスタム投稿タイプ「news」の記事ページ
taxonomy-news.php 追加したタクソノミーページ

次にパーマリンクを分かりやすくするためにプラグイン「Custom Post Type Permalinks」を使ってみます。

Custom Post Type Permalinks

 

(詳細は後ほど)

 

 

 

-WordPress, 備忘録