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;
}
}