本記事ではプラグインは使用せず、functions.phpで定義することを前提にしています。
プラグインを利用しないメリットは、GitHubでコードベースで管理できることが挙げられます。
パーマリンクを作成しないカスタム投稿を作る理由は、PHPから呼び出す利用をするため、余計なURLを生成しないことを実現したかったからです。もちろんAPIから呼び出すのも可能です。
目次
カスタム投稿を作る
カスタム投稿は register_post_type
で各種オプションを定義できます。
function create_member_custom_post_type() {
$args = array(
'label' => 'カスタム 投稿', // 管理画面で表示するラベル
'public' => false, // フロントで表示するか
'show_ui' => true, // 管理画面にてカスタム投稿タイプを表示するか
'show_in_rest' => true, // true:「Gutenberg」/ false:「ClassicEditor」
'exclude_from_search' => true, // 検索結果からこの post_type を選択候補から外す
'publicly_queryable' => false, // フロントエンドで投稿タイプのクエリを実行できるかどうか
'supports' => array('title', 'editor', 'revisions' ), // 投稿時に、使用できる投稿用のパーツを指定する
);
register_post_type('api_member_post', $args);
}
$public
のbool値でフロントエンドに表示するかどうかを定義します。
つまり、ここのbool値が「パーマリンクを表示するかどうか」を定義することになります。
気をつける点は、$public
の値は $exclude_from_search、$publicly_queryable、$show_ui に継承されます。
そのため、具体的に定義したい場合はbool値を変更する必要があります。
例えば今回は、カスタム投稿を検索させたくなかったので、$exclude_from_search
をtrueにしています。
register_post_type の詳細は公式を参照すると理解が深まります。
WordPress Developer Resources
![](data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)
![](https://developer.wordpress.org/wp-content/themes/wporg-developer-2023/images/opengraph-image.png)
register_post_type() – Function | Developer.WordPress.org
Registers a post type.
最後に add_actionフックで登録します。
add_action('init', 'create_member_custom_post_type');
これで管理画面をリフレッシュすると、カスタム投稿が表示され利用できるようになります。
Summary
コードベースで管理すると、時間が経ってみた時にわかりやすいことと、仮に移管が必要な時はテーマファイルだけで完結するようになるのでおすすめです。