get_post_types()
acepta una serie de argumentos para coincidir con los campos de a post type object . Entonces, podrías hacer algo como esto (no probado):
$post_types = get_post_types(array(
'public' => true,
'supports' => array( 'editor', 'title', 'thumbnail' )
), 'objects');
Lamentablemente, no puede establecer algo como "excluir" en esta función, y también obtiene solo tipos de publicación que admiten exactamente 'editor', 'title', 'thumbnail'
, ni más ni menos.
O podría usar get_post_types_by_support()
(solo para WP 4.5 y superior. Además, tenga en cuenta que tampoco puede excluir tipos de mensajes específicos con esta función, pero para el caso específico de soporte para editor, title, thumbnail
, el tipo de mensaje adjunto excluirse en la mayoría de los casos).
$post_types = get_post_types_by_support( array( 'editor', 'title', 'thumbnail' ) );
Si quieres algo que funcione en cualquier caso, intentaría obtener tipos de publicación basados en un criterio más amplio y luego construir tu 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;
}
}