WordPressのテーマ開発しているとたまに使うんだけどすぐ忘れるのでメモ。
やりたいこと
今、このサイト上に登録されているカスタム投稿タイプの名前(スラッグ)をすべて取得したい。
すべてのカスタム投稿タイプ名(スラッグ)を取得する方法
get_post_types()
を使います。
<?php
$args = [
'public' => true,
'_builtin' => false
];
$result = get_post_types($args);
post, pageを含めたい場合
結果にpostとpageを含めたい。そんなときは _builtin
を true
にすればいいんだけど、残念なことに 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;
}