no-image

functions内でget_post_typesを使う時はadd_action(‘init’)を使わないと取得できない

functions.php内でカスタム投稿タイプごとに設定を追加したいときに、ループで一気に書いてしまいたいことがあると思います。

このとき、get_post_types()を使いたくなるのですが、このままでは動きません。
なぜならfunctionsはinitフック(register_post_typesなどを実行するタイミング)よりも早く呼び出されるため、functions内にベタ書きしてもwordpressデフォルトのpost_typeしか取得できないのです。

これを回避するためにはadd_action(‘init’)を使って以下のように書く必要があります。

add_action('init','echo_custum_post_types');
function echo_custum_post_types(){
$args = array(
'public' => true,
'_builtin' => false
);
$post_types = get_post_types( $args );
echo var_dump($post_types);
}

参考

https://nelog.jp/get_custum_post_types
https://webtomoblg.net/wp-work/

pocketlinehatebuimagegalleryaudiovideocategorytagchatquotegoogleplusfacebookinstagramtwitterrsssearchenvelopeheartstaruserclosesearch-plushomeclockupdateeditshare-squarechevron-leftchevron-rightleafexclamation-trianglecalendarcommentthumb-tacklinknaviconasideangle-double-upangle-double-downangle-upangle-downstar-halfstatus