ナム山

家最高 今年一年でサックスが吹けるようになるか観測中

カスタム投稿の一覧表示を作る

Wordpressでカスタム投稿をよく利用するが、久しぶりに触った時にアーカイブ作成するのに手間取ったので備忘録。いい機会なのでリファレンスを再確認した。
具体的にはアーカイブを有効にして、アイキャッチを投稿できるようにしたい。

参考:https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/register_post_type

基本形

<?php register_post_type( $post_type, $args ); ?>

よく使うやり方

add_action( 'init', 'function名' );
function function名(){
    register_post_type( 'post名',//任意のpost名をつける
        array(
            'labels' => array( //ラベル(表示名)の細かなオプション,とりあえずnameがデフォルトで使用される
            'name' => __( 'ラベル名' )
        ),
        'menu_position' =>5,
        'public' => true,
        'exclude_from_search' => false,
        'hierarchical' => true,//階層構造 デフォルトはtrue
        'taxonomies' => [],
        'has_archive'  => true, 
        )
        'supports'     => array(
	        'title', //タイトルを表示
	        'editor', //カスタムフィールドを表示
	        'thumbnail' //アイキャッチを利用する
	    )
    );
}

もちろん先に$argsを決め込んでからregister_post_type( $post_type, $args );でシンプルに書いてしまっても良い。

他にもオプションはあるが内部の操作に必要そうなものをざっと並べた。
上から順に
・labels(配列) - ラベルの配列
・public(真偽値) - 管理画面とフロントエンドで公開するか否か
・exclude_from_search(真偽値) - 検索結果から除外するか否か
・hierarchical(真偽値) - 階層を持つかどうか 使用するなら'supports'パラメータに'page-attributes'を含めること
・taxonomies(配列) - タクソノミーの配列 register_taxonomy()で明示的に登録する
・has_archive(真偽値/文字列) - アーカイブを有効にする デフォルトは$post_type
・supports(配列) - add_post_type_support()呼び出しのエイリアス falseでデフォルト設定(title,editor)を止める

注意点

  • 必ずinitアクションの中から呼び出すこと
  • カスタムタクソノミーを付ける場合taxsonomies引数を使って登録する(フィルターを使う際紐づかなくなってしまう)
  • 同じくregister_taxonomy()を使って明示的に定義する必要がある

タクソノミー周りは複雑なのでプラグイン使いがち

今回の目玉はhas_archiveとsupports。
supportsの詳細はリファレンスを参照。
無事、'thumbnail'でアイキャッチをオンにしてアーカイブできるようになった。

post_typeの登録だけあって基本的な表示内容やオプションはここで指定できる。
改めてリファレンス読んだらこんなこともできるのかと発見があってよかった。
最低限の内容抑えるついでにこんなこともあるのね、程度に頭に入れておくといざ必要になった際に必要なもののアタリがつくので良いと思った。