get_post_types()acepta una serie de argumentos para que coincidan con los campos de un objeto de tipo publicación . Entonces, podría hacer algo como esto (no probado):
$post_types = get_post_types(array(
'public' => true,
'supports' => array( 'editor', 'title', 'thumbnail' )
), 'objects');
Desafortunadamente, no puede configurar algo como "excluir" en esta función, y también obtiene solo tipos de publicaciones que admiten exactamente 'editor', 'title', 'thumbnail' , ni más ni menos.
O puede usar get_post_types_by_support()(solo para WP 4.5 y superior. Además, tenga en cuenta que tampoco puede excluir tipos de publicación específicos con esta función, pero para el caso específico de soporte para editor, title, thumbnail, el tipo de publicación de archivo adjunto se excluirá en la mayoría de los casos).
$post_types = get_post_types_by_support( array( 'editor', 'title', 'thumbnail' ) );
Si desea algo que funcione en cualquier caso, trataría de obtener tipos de publicación basados en un criterio más amplio, luego construir su propia matriz, algo como esto:
$_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;
}
}