get_post_types()
принимает массив аргументов, чтобы соответствовать полям объекта типа записи . Итак, вы можете сделать что-то вроде этого (не проверено):
$post_types = get_post_types(array(
'public' => true,
'supports' => array( 'editor', 'title', 'thumbnail' )
), 'objects');
К сожалению, вы не можете установить что-то вроде «исключить» в этой функции, а также вы получаете только те типы сообщений, которые поддерживают точно '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;
}
}