【WordPress】カスタム投稿を複数作成し、カスタムタクソノミーも追加する
記事更新日:2022-09-18
register_post_type()
投稿タイプを作成または変更します。
カスタム投稿を1つまたは複数作成する
<?php
// ★カスタム投稿の数だけarrayを用意する★
$post_aaa_array = array(
'post_type' => 'aaa',
'name' => 'aaa',
'icon' => 'dashicons-editor-paste-word',
);
$post_bbb_array = array(
'post_type' => 'bbb',
'name' => 'bbb',
'icon' => 'dashicons-editor-paste-word',
);
// ↓ここから共通↓
function create_custom_post($array) {
// 配列を返す関数で、配列を受け取る
$args_post = return_custom_post_args($array);
$args_category = return_custom_cat_args($array);
$args_tag = return_custom_tag_args($array);
// カスタム投稿の設定
register_post_type(
$array['post_type'],
$args_post,
);
// カスタムタクソノミー(カテゴリー)の登録
register_taxonomy(
$array['post_type'] . '-category', // 1.スラッグ:$term->slug
$array['post_type'], // 2.利用する投稿タイプ
$args_category, // 3.オプション
);
// カスタムタクソノミー(タグ)の設定
register_taxonomy(
$array['post_type'] . '-tag',
$array['post_type'],
$args_tag,
);
}
add_action('hook_create_custom_post', 'create_custom_post', 10, 1);
// ↑ここまで共通↑
// ★カスタム投稿の数だけdo_actionを用意する★
do_action('hook_create_custom_post', $post_aaa_array);
do_action('hook_create_custom_post', $post_bbb_array);
配列を返す関数|投稿
<?php
function return_custom_post_args($array) {
$post_type = $array['post_type'];
$name = $array['name'];
$icon = $array['icon'];
$supports = array(
'title', // タイトルフォーム
'editor', // エディター(内容の編集)
'thumbnail', // アイキャッチ画像
'revisions', // リビジョンを保存
);
$args = array(
'labels' => [
'name' => $name,
'singular_name' => $post_type,
'add_new' => $name . 'の新規追加',
'edit_item' => '投稿を編集', // 日本語表記に変更
],
'public' => true, // 管理画面に追加
'has_archive' => true, // 投稿した記事の一覧ページを作成する
'menu_position' => 5, // 管理画面メニューの表示位置(投稿の下に追加)
'rewrite' => array('slug' => $post_type, 'with_front' => false),
'show_in_rest' => true, // true:「Gutenberg」/ false:「ClassicEditor」
'menu_icon' => $icon,
'supports' => $supports,
);
return $args;
}
配列を返す関数|カテゴリ
<?php
function return_custom_cat_args($array) {
$name = $array['name'];
$args = array(
'hierarchical' => true,
'label' => $name . 'のカテゴリー',
'public' => true,
'show_in_rest' => true, // 管理画面に追加
);
return $args;
}
配列を返す関数|タグ
<?php
function return_custom_tag_args($array) {
$name = $array['name'];
$args = array(
'hierarchical' => true,
'label' => $name . 'のタグ',
'public' => true,
'show_in_rest' => true, // 管理画面に追加
);
return $args;
}
functions.php
<?php
include(get_template_directory() . '/xxx/return_custom_post_args.php');
include(get_template_directory() . '/xxx/return_custom_cat_args.php');
include(get_template_directory() . '/xxx/return_custom_tag_args.php');
include(get_template_directory() . '/xxx/create_custom_post.php'); // ※必ず上記3つより下に記述する
/
2022-09-18
編集後記:
この記事の内容がベストではないかもしれません。