カスタム投稿タイプを作る2 〜functions.php編〜

カスタム投稿タイプを作る2 〜functions.php編〜

Custom Post Type UIプラグインを使わずfuncions.phpに直接書くことでプラグインなしで同様のことができます。
初期に一度設定して後は、ほとんど触らないプラグインなので出来れば脱プラグインしたいですよね?

解説

前回のカスタム投稿タイプを作る 〜Custom Post Type UIの使い方〜で作ったのと同じものを、functions.phpに書いた場合のコード。
翻訳関数は省いています。

function wpqw_custom_post_type() {
	register_post_type(
		'info',
		array(
			'label'=> 'お知らせ',
			'public' => true,
			'hierarchical'=> true,
			'has_archive' => true,
			"show_in_rest" => true,
			'supports' => array(
				'title',
				'editor',
				'thumbnail',
				'excerpt',
				'trackbacks',
				'custom-fields',
				'comments',
				'revisions',
				'author',
				'post-formats',
			),
		)
	);
	register_taxonomy(
		'categorize',
		'info',
		array(
			'label' => 'カテゴリー',
			'public' => true,
			'hierarchical'=> true,
			'show_ui' => true,
			'show_admin_column' => true,
			'show_in_rest' => true,
		)
	);
	register_taxonomy(
		'tags',
		'info',
		array(
			'label' => 'タグ',
			'public' => true,
			'show_ui' => true,
			'show_admin_column' => true,
			'show_in_rest' => true,
		)
	);
}
add_action( 'init', 'wpqw_custom_post_type' );

カスタム投稿設定

2〜23行目の、register_post_type()でカスタム投稿を設定します。

3行目で、カスタム投稿のスラッグを指定します。
この場合、https://exmaple.com/info/ というURLになります。

5行目のLabelは管理画面のメニュー名になります。

9行目はWP5以降で、ブロックエディターを有効にします。

11〜20行目は、投稿画面で必要な機能を記述します。
不要なものは削除して下さい。

カスタム投稿用のカテゴリーとタグを設定

24〜46行目の、register_taxonomy()でそれぞれカテゴリーとタグを設定します。

24〜35行目(カテゴリー用)と36〜46行目(タグ用)のブロックに分かれているのが分かると思います。
2つのブロックを比較してわかる通り、30行目の'hierarchical'=> true,の有無でカテゴリーとタグを切り替えています。

言葉のおさらい。
ワードプレスではカテゴリーもタグもタクソノミー(taxonomy)と言います。

26行目と38行目は、はじめに作成したカスタム投稿のスラッグを書きます。
25行目と36行目は、それぞれ固有のスラッグを設定します。
設定によっては、URLに表示されるため分かりやすいものを指定。
32行目と43行目は、管理画面の投稿一覧に表示するための設定です。

スラッグに使えない文字列

post / page / attachment / revision / nav_menu_item / action / order / theme / その他

Codex

次回

functions.phpに直接書き、脱プラグイン出来たと思います。
しかし、Theme Checkプラグインでエラーになってませんか?
そこで対策として、次回はカスタム投稿のオリジナルプラグイン化です!