Intereting Posts
Совместный вопрос / ответ плагин для WordPress Странное перенаправление поведения после перемещения сайта разработки на клиентский сервер get_template_part () не срабатывает внутри оператора switch, когда у шаблона есть новый WP_Query 2-я страница, отображающая те же самые сообщения, что и моя первая страница (минус первая запись) Неправильный идентификатор сообщения в Function.php Пользовательская таксономия в плагине и шаблоне Миграционный сайт WordPress предоставляет китайские Разрешение загрузки wordpress на nginx & ubuntu BuddyPress – Поиск участников по имени, а также по имени пользователя хранить / кешировать ajax отправленные данные, чтобы избежать повторного запроса Как сохранить заголовок изображения при изменении темы Частные страницы, которые работают, когда вы не вошли в WP admin Как ограничить редакцию от просмотра / редактирования страниц, созданных администратором? грубая силовая атака, хотя она ограничена IP Отображать только самую глубокую категорию на одном посту?

Фильтр для изменения post_title после загрузки изображения?

Когда я загружаю изображения, WordPress 3.4.2 устанавливает Title в базу имени файла, например «DSCN1234» или «IMG_1234». Я хочу, чтобы заголовок оставался пустым.

Код, который устанавливает название во время загрузки, кажется, находится в «wp-admin / includes / media.php» в функции media_handle_upload() , здесь:

 // Construct the attachment array $attachment = array_merge( array( 'post_mime_type' => $type, 'guid' => $url, 'post_parent' => $post_id, 'post_title' => $title, 'post_content' => $content, ), $post_data ); 

Если я просто изменю его на 'post_title' => "", он исправляет его, но я понимаю, что основной код не следует изменять.

Есть ли фильтр, который я могу использовать для изменения Title после того, как он был установлен обработчиком загрузки? Я пробовал wp_handle_upload и wp_handle_upload_prefilter но они не дают мне доступ к данным post_title .

Фильтр attachment_fields_to_edit дает мне доступ к post_title , но он запускается для каждого изображения при редактировании галереи – я просто хочу изменить post_title одного изображения сразу после его загрузки. (если пользователь вручную задает Title в имени файла после этого, я не хочу его удалять.) Любые другие идеи?


UPDATE: ну, я только что обнаружил, что post_title возвращается к имени файла при каждом обновлении галереи (повторная сортировка изображений и т. Д.). И даже если я использую фильтр attachment_fields_to_edit для очистки post_title , он не остается очищается, потому что, когда я нажимаю «Сохранить изменения», что-то, по-видимому, не нравится тому, что я установил поле «Название» как пустое, хотя это обязательное поле (красная звездочка рядом с ним). Другие идеи оценили.

Благодаря!
Рассел

Solutions Collecting From Web of "Фильтр для изменения post_title после загрузки изображения?"

(Отвечая на мой собственный вопрос, с помощью @brasofilo)

В WordPress 3.5 есть отличный новый менеджер мультимедиа, и он больше не требует заполнения заголовка для изображений. Он также больше не заполняет заголовок автоматически при реорганизации изображений в Галерее. Тем не менее, он все равно заполняет заголовок с именем файла изображения при загрузке изображения, например «DSCN1234». Но этого можно предотвратить, добавив следующий код в файл functions.php в теме:

 add_action( 'add_attachment', 'wpse_70093_modify_uploaded_file_title' ); function wpse_70093_modify_uploaded_file_title( $attachment_ID ) { $the_post = array(); $the_post['ID'] = $attachment_ID; $the_post['post_title'] = ''; wp_update_post( $the_post ); } 

После того, как изображение будет загружено, заголовок будет пустым, и он останется таким, если вы специально его не установили – даже если изображение отредактировано в WordPress.

Существует плагин, который вы можете использовать для этой цели http://wordpress.org/extend/plugins/img-title-removal/ этот плагин скроет заголовок вообще (не уверен, что это то, что вы хотите выполнить?)

То, что можно сделать, – установить название всех загрузок в «Без названия».

Затем фильтруйте the_title и верните пустую строку, если заголовок attachent соответствует умолчанию.

Основная идея:

 add_action( 'add_attachment', 'wpse_70093_modify_uploaded_file_title' ); add_filter( 'the_title', 'wpse_70093_display_untitled', 10, 2 ); function wpse_70093_modify_uploaded_file_title( $attachment_ID ) { $the_post = array(); $the_post['ID'] = $attachment_ID; $the_post['post_title'] = 'Untitled'; wp_update_post( $the_post ); } function wpse_70093_display_untitled( $title, $id ) { if( 'attachment' != get_post_type( $id ) ) return $title; if( is_admin() ) return $title; if( !is_admin() && 'Untitled' == $title ) return ''; return $title; } 

[Обновить]
Мне не хватало внешнего подхода. Фильтрация the_title работает только на странице attachment.php .

Изображения, вставленные в редактор, должны быть отфильтрованы с помощью:

 add_filter('image_send_to_editor', 'wpse_53577_img_wrapper', 20, 8); function wpse_53577_img_wrapper($html, $id, $caption, $title, $align, $url, $size, $alt) { /* Manipulate $html result */ return $html; } 

post_gallery [gallery] должен быть перестроен с помощью post_gallery .

Другие случаи должны рассматриваться индивидуально.