回答:
私はそれget_post_types_by_support()
が望ましい結果を得るための解決策のように見えることを発見しました:
$post_types = get_post_types_by_support(array('title', 'editor', 'thumbnail'));
上記戻りますpost
、page
と任意のカスタムポストタイプがサポートされていることtitle
、editor
およびthumbnail
。
これはプライベート投稿タイプも返すので、リストをループして、タイプがフロントエンドで表示可能かどうかを確認できます。これは、次のis_post_type_viewable()
関数を使用して実行できます。
foreach ($post_types as $key => $post_type) {
if (!is_post_type_viewable($post_type)) {
unset($post_types[$post_type]);
}
}
get_post_types()
ポストタイプオブジェクトのフィールドと一致する引数の配列を受け入れます。したがって、次のようなことができます(テストされていません)。
$post_types = get_post_types(array(
'public' => true,
'supports' => array( 'editor', 'title', 'thumbnail' )
), 'objects');
残念ながら、この関数で "exclude"のような設定を行うことはできません。また、厳密 'editor', 'title', 'thumbnail'
にをサポートする投稿タイプのみを取得できます。
または、使用することもできますget_post_types_by_support()
(WP 4.5以降のみ。また、この関数で特定の投稿タイプを除外することはできませんが、サポートの特定のケースではeditor, title, thumbnail
、ほとんどの場合、添付投稿タイプが除外されます)。
$post_types = get_post_types_by_support( array( 'editor', 'title', 'thumbnail' ) );
どんな場合でも機能するものが必要な場合は、より広い基準に基づいて投稿タイプを取得してから、次のような独自の配列を作成します。
$_post_types = get_post_types_by_support( array( 'editor', 'title', 'thumbnail' ) );
$post_types = [];
foreach($_post_types as $post_type) {
// In most cases, attachment post type won't be here, but it can be
if( $post_type->name !== 'attachment' ) {
$post_types[] = $post_type;
}
}
supports
しても動作しないようですが?サポートするカスタム投稿タイプがeditor
あり、使用するsupports => array('editor')
と空の結果が得られますか?あなたの2番目のアプローチはうまくいくようです。
get_post_types_by_support()
サポートを利用してこれを達成できるようです。