get_post_types()
aceita uma matriz de argumentos para corresponder aos campos de um objeto do tipo postagem . Então, você poderia fazer algo assim (não testado):
$post_types = get_post_types(array(
'public' => true,
'supports' => array( 'editor', 'title', 'thumbnail' )
), 'objects');
Infelizmente, você não pode definir algo como "excluir" nesta função, e também obtém apenas tipos de post que suportam exatamente 'editor', 'title', 'thumbnail'
, nem mais nem menos.
Ou você pode usar get_post_types_by_support()
(apenas para o WP 4.5 e superior. Além disso, também não é possível excluir tipos de postagem específicos com essa função, mas, no caso específico de suporte editor, title, thumbnail
, o tipo de postagem de anexo será excluído na maioria dos casos).
$post_types = get_post_types_by_support( array( 'editor', 'title', 'thumbnail' ) );
Se você quiser algo que funcione em qualquer caso, eu tentaria obter tipos de postagem com base em critérios mais amplos e, em seguida, crie sua própria matriz, algo como isto:
$_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;
}
}