WordPress サイトで使っているすべてのカスタム投稿タイプの情報を取得する

WordPress

WordPressのテーマ開発しているとたまに使うんだけどすぐ忘れるのでメモ。

やりたいこと

今、このサイト上に登録されているカスタム投稿タイプの名前(スラッグ)をすべて取得したい。

すべてのカスタム投稿タイプ名(スラッグ)を取得する方法

get_post_types()を使います。

<?php
  $args = [
    'public' => true,
    '_builtin' => false
  ];
  $result = get_post_types($args);

post, pageを含めたい場合

結果にpostとpageを含めたい。そんなときは _builtintrue にすればいいんだけど、残念なことに attachment も入ってしまう。というわけで、カスタム投稿タイプにpostとpageだけを含めた配列を返す関数を作っておくとよいでしょう。

返り値はスラッグのみの配列にしています。

<?php
/**
 * すべてのカスタム投稿タイプスラッグ + post + page の配列を返す
 */
function mh_get_post_types()
{
  $args = [
    'public' => true,
    '_builtin' => false
  ];
  $post_types = get_post_types($args);
  $post_types = array_merge(['post', 'page'], array_values($post_types));

  return $post_types;
}