Я пытаюсь получить список, включающий как встроенные, так и пользовательские типы сообщений:
$post_types = get_post_types(array(
'public' => TRUE,
), 'objects');
Вышеуказанное почти работает, но я хотел бы исключить attachment
из этого списка только возвращаемые типы сообщений с определенной поддержкой, такой как editor
, title
и thumbnail
. Это возможно?
custom-post-types
post-type-support
Cyclonecode
источник
источник
get_post_types()
принимает массив аргументов, чтобы соответствовать полям объекта типа записи . Итак, вы можете сделать что-то вроде этого (не проверено):К сожалению, вы не можете установить что-то вроде «исключить» в этой функции, а также вы получаете только те типы сообщений, которые поддерживают точно
'editor', 'title', 'thumbnail'
, не больше и не меньше.Или вы можете использовать
get_post_types_by_support()
(только для WP 4.5 и выше. Также обратите внимание, что вы не можете исключить определенные типы записей с помощью этой функции, но для конкретного случая поддержкиeditor, title, thumbnail
, тип сообщения вложения будет исключен в большинстве случаев).Если вы хотите что-то, что будет работать в любом случае, я постараюсь получить типы постов на основе более широких критериев, а затем создать свой собственный массив, что-то вроде этого:
источник
supports
не похоже на работу? У меня есть пользовательский тип сообщения, который поддерживает,editor
и если я использую,supports => array('editor')
я получаю пустой результат? Ваш второй подход, похоже, работает.get_post_types_by_support()
поддержку, чтобы достичь этого.Простейший подход к вопросу OP состоит в том, чтобы просто удалить «вложение» из возвращенного массива;
Хотя он не так элегантен, как другие решения, он имеет наименьшие накладные расходы.
источник