WordPressで利用されている「カスタム投稿タイプ名」をすべて取得する関数

WordPressを利用していて、特殊な投稿をしたい場合は「カスタム投稿」を利用している人も多いかと思います。

設定方法はこちら。

# 1.functions.phpに処理を追加 以下の処理を**functions.php**に追加する。この時、投稿タイプの定義も同時に行う (以下の例は投稿タイプを**news**としています) ```functions.ph...

上記のような設定をしている場合、『WordPressユーザーが独自追加した「カスタム投稿タイプ」を全て手軽に取得できないか?』と思ったもので、調べて関数化してみました。

スポンサーリンク
レクタングル(大)広告

カスタム投稿タイプ名の配列を取得する関数

作成した関数はこちら。

思ったより簡単に実装できました。

まずは、get_post_types用の「カスタム投稿タイプのみを取得する引数($args)」を設定した後、get_post_types($args)関数を実行しているだけです。

例えば、「news」、「event」といったようなカスタム投稿タイプを追加している場合は、関数を実行すると、戻り値として以下のような配列を取得できます。

参考にしたページはこちら。

参考 WordPressで投稿タイプの一覧やカスタム投稿タイプの一覧を取得する – WebCake

利用例

僕はこれまで、投稿管理画面のメタボックスの追加などには、以下のように一つ一つ指定していました。

けれど、get_custum_post_types()関数を利用してループ処理をすることで、すべての「カスタム投稿タイプ」に自動で対応させることができます。

これだと「カスタム投稿タイプ」を追加するたびに、一つ一つコードを書く必要がなくなるので、かなり楽になります。

難点としては、全ての「カスタム投稿タイプ」に対して処理が行われてしまうということです。例えば、WordPressフォーラムプラグイン(bbPress)等をインストールしている場合は、forum、topic、replyといったような、「プラグイン側が指定しているカスタム投稿タイプ」まで出力されます。

まとめ

難点もあるとはいえ「カスタム投稿タイプ名」さえわかれば、いろいろな操作を制御することが可能になります。

処理を行いたくない「カスタム投稿タイプ名」だった場合は、除外するなどしてフィルタリング等で対応もできると思います。

ということで、うまく利用すると「カスタム投稿」周りの設定を、ある程度自動化出来るようになるかと思います。