[WordPress]パーマリンクを作成しないカスタム投稿を作る。

本記事ではプラグインは使用せず、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 の詳細は公式を参照すると理解が深まります。

最後に add_actionフックで登録します。

add_action('init', 'create_member_custom_post_type');

これで管理画面をリフレッシュすると、カスタム投稿が表示され利用できるようになります。

Summary

コードベースで管理すると、時間が経ってみた時にわかりやすいことと、仮に移管が必要な時はテーマファイルだけで完結するようになるのでおすすめです。

よかったらシェアしてね!
目次