get_post_types()
akceptuje tablicę argumentów zgodną z polami obiektu typu post . Więc możesz zrobić coś takiego (nie testowane):
$post_types = get_post_types(array(
'public' => true,
'supports' => array( 'editor', 'title', 'thumbnail' )
), 'objects');
Niestety w tej funkcji nie można ustawić czegoś takiego jak „wykluczenie”, a także otrzymujesz tylko typy postów, które dokładnie obsługują 'editor', 'title', 'thumbnail'
, nie więcej i nie mniej.
Lub możesz użyć get_post_types_by_support()
(tylko dla WP 4.5 i nowszych. Pamiętaj też, że nie można wykluczyć określonych typów postów za pomocą tej funkcji, ale w konkretnym przypadku wsparcia dla editor, title, thumbnail
typu postu załącznik zostanie w większości przypadków wykluczony ).
$post_types = get_post_types_by_support( array( 'editor', 'title', 'thumbnail' ) );
Jeśli chcesz czegoś, co zadziała w każdym przypadku, postaram się uzyskać typy postów oparte na szerszych kryteriach, a następnie zbuduj własną tablicę, coś takiego:
$_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;
}
}