カスタム投稿を追加する

自分用の備忘録です。

新着情報によく追加するのですが、
カスタム投稿っていっつもひっかかるんですよね・・・。

ので、今回実際にfunctions.phpに追加した記述をまるっと載せておきます。


/* カスタム投稿追加 */
add_action( 'init', 'create_post_type' );
function create_post_type() {
register_post_type( 'news', [ // 投稿タイプ名の定義
'labels' => [
'name' => 'ニュース', // 管理画面上で表示する投稿タイプ名
'singular_name' => 'news', // カスタム投稿の識別名
],
'public' => true, // 投稿タイプをpublicにするか
'has_archive' => true, // アーカイブ機能ON/OFF
'menu_position' => 5, // 管理画面上での配置場所
'show_in_rest' => true, // 5系から出てきた新エディタ「Gutenberg」を有効にする
'rewrite' => array('with_front' => false),/* パーマリンクの「blog」削除 */
]);
}
/* カスタム投稿にカテゴリをつける */

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

/* カスタム投稿パーマリンクを投稿ID(数字)にする */
add_filter( 'post_type_link', 'my_post_type_link', 1, 2 );
function my_post_type_link( $link, $post ){
if ( 'news' === $post->post_type ) {
return home_url( '/news/' . $post->ID );
} else {
return $link;
}
}
add_filter( 'rewrite_rules_array', 'my_rewrite_rules_array' );
function my_rewrite_rules_array( $rules ) {
$new_rules = array(
'news/([0-9]+)/?$' => 'index.php?post_type=news&p=$matches[1]',
);

return $new_rules + $rules;
}

上記のように作成した場合、
カスタム投稿のアーカイブURLは
http://ワードプレスのURL/news
になります。

コメント

タイトルとURLをコピーしました