Descobri que get_post_types_by_support()
parece ser a solução para obter o resultado desejado:
$post_types = get_post_types_by_support(array('title', 'editor', 'thumbnail'));
As opções acima retornarão post
, page
e qualquer tipo de postagem personalizada que suporte title
, editor
e thumbnail
.
Como isso também retornará tipos de postagens privadas, poderíamos percorrer a lista e verificar se o tipo é visível no frontend. Isso pode ser feito usando a função is_post_type_viewable()
:
foreach ($post_types as $key => $post_type) {
if (!is_post_type_viewable($post_type)) {
unset($post_types[$post_type]);
}
}