Я использую, register_taxonomy_for_object_type()
чтобы добавить поле таксономии категории в медиафайлы (вложения). Я использую этот код для этого:
add_action('init', 'reg_tax');
function reg_tax() {
register_taxonomy_for_object_type('category', 'attachment');
}
Это работает и добавляет простое текстовое поле для категории на страницу мультимедиа при просмотре изображения. Я действительно хочу, чтобы он отображал метабокс категорий, чтобы я мог выбирать категории, которые я хочу использовать, а не просто вводить их в обычное поле. Я также обнаружил, что добавление фрагмента для категории в это текстовое поле, например, в my-category-name
конечном итоге отображает фактическое имя категории, например, My Category Name
когда оно сохранено, что делает простое текстовое поле еще менее полезной опцией.
Я искал add_post_type_support()
функцию добавления метабоксов и видел, что она используется для пользовательских типов записей, я просто не вижу, можно ли добавить то же самое для вложений.
источник
Ответы:
Изменить: 12/09/2017 См. Этот ответ для более актуального решения этого вопроса: Как использовать таксономии на вложения с новой медиа-библиотеки?
Я собираюсь ответить на свой вопрос здесь, так как мне удалось найти решение того, что я пытался сделать. Я пришел к выводу, что невозможно включить метабокс категорий для вложений. Однако я обнаружил, что достаточно просто получить базовое поле для категорий, добавленных на страницу вложений, с помощью
register_taxonomy_for_object_type
иadd_post_type_support
:Добавленное поле показывается так:
Это просто текстовое поле, но я обнаружил, что вы можете ввести там имя существующей категории, и оно будет успешно сохранено при обновлении вложения. (Единственное странное поведение в том, что он возвращает обычную версию вместо слизняк после сохранения).
Как только я понял, что могу сохранять категории таким способом, я решил, что смогу получить список всех доступных категорий в виде флажков и проверить те, которые были выбраны. Затем я использовал немного jQuery, чтобы получить значения проверенных категорий и поместить все слагаемые категорий в поле Category. Чтобы это выглядело еще более плавно, я затем использовал простой кусочек CSS, чтобы скрыть строку таблицы, которая содержала поле «Категория», поэтому все, что вы когда-либо видите, это флажки, например:
Теперь, когда я могу добавлять категории к вложенным изображениям, я могу использовать что-то вроде:
И перетащите изображения по категориям на страницу! Именно то, что я надеялся сделать, я не думал, что будет способ сделать это, но рад, что мне удалось что-то выяснить.
Я превратил это в плагин под названием,
WOS Media Categories
который я сделал доступным для загрузки с моего сайта Suburbia.org.uk. Надеюсь, он пригодится кому-то еще! Еще раз спасибо тем, кто прокомментировал этот и другие вопросы, которые я задал здесь, которые помогли понять это!Обновление: я добавил исправление, позволяющее добавлять категории, когда изображения загружаются с помощью загрузчика Flash.
источник
только что создал это, что является полным обходным путем к связи javascript herky-jerk с полем формы. Поскольку значения ваших флажков передаются вместе с $ _POST при отправке, вы можете просто получить их во время фильтра add_image_attachment_fields_to_save и установить условия объекта post.
(обратите внимание, что я использую настраиваемую таксономию, а не категории, поэтому вам придется изменить массив $ category, чтобы он соответствовал тому же массиву, который вы используете при установке своих флажков)
Шабам, шабул. Наслаждаться.
источник
wp_set_object_terms( $post['ID'], $terms, 'image-format' ); return $post;
, И скрипт, который вы разместили, не выполняет register_custom_taxonomies. Но в любом случае хороший сценарий. Обязательно буду использовать это в будущем!Это сложно / сложно, если вы хотите использовать стандартное поле категорий WordPress. Прежде всего, метабокс не возвращает вывод, он просто повторяет его. Кроме того, он не даст вам правильное имя поля ввода, поэтому он не сохранит. Одной из идей может быть использование автозаполнения пользовательского интерфейса jQuery для репликации функциональности блока тегов.
Однако, если вы хотите поиграться с полями редактора мультимедиа, вы можете подключить
'attachment_fields_to_edit'
и отредактировать массив полей. Фильтр передает два аргумента обратному вызову: первый аргумент - это массив полей, второй - объект сообщения вложения. Смотрите здесь для более подробной информации:http://phpxref.ftwr.co.uk/wordpress/nav.html?wp-admin/includes/media.php.source.html#l1025
источник
attachment_fields_to_edit
и посмотрю, как все пойдет.Я создал плагин, используя @ RickCurran WOS Media Categories в качестве отправной точки. Тем не менее, WOS Media Categories, как и другие плагины, которые добавляют поддержку категорий в медиа, на самом деле не добавляет метабокс, я только что это сделал.
Это обязательно упрощенная форма метабоксов на постах и страницах, но я включил возможность фильтрации, которая упрощает использование.
Я на самом деле генерирую весь метабокс категории, который вы видите на страницах и постах, но скрываю биты, которые не работают на медиа-странице из-за отсутствия стиля и отсутствующего javascript.
Я приветствую любые мысли о том, как сделать метабокс полностью функциональным, что я собираюсь сделать в более поздней версии.
источник
Отличный плагин Рик - очень полезно.
Если вы переместите встроенный триггер onclick вместо привязки его к onload (и сделаете несколько других незначительных изменений), он также будет работать с загрузчиком Flash. В текущей версии Flash загружается после события загрузки jQuery, поэтому объекты еще не существуют.
пересмотренный JS:
добавить onclick для ввода в php файл:
добавить идентификатор формы массовой загрузки в файл CSS:
}
источник