Intereting Posts

Сохранение предварительно дезинфицированного имени файла вложения в качестве заголовка или надписи

Я попробовал честный поиск, но до сих пор ничего не вышло. У меня есть клиент, который должен загружать много изображений в галереи и экономить время, которое он сохраняет подписи в качестве имен файлов в Photoshop. Лично я бы предпочел сделать это в WP, но это рабочий процесс, который у него есть, и он не сдвинется с места!

Есть ли способ захватить предварительно очищенное имя файла и сохранить его как метаданные?

Я посмотрел на wp_handle_upload_prefilter но это не wp_handle_upload_prefilter в нужной точке из того, что я вижу.

Solutions Collecting From Web of "Сохранение предварительно дезинфицированного имени файла вложения в качестве заголовка или надписи"

К сожалению, wp_handle_upload_prefilter hook еще не распознает идентификатор вложения. Слишком рано и запускает предварительно дезинфицированное имя файла (перед перемещением вложения и сохранением его в виде сообщения)

Логика

Что вы можете сделать, так это использовать этот hook wp_handle_upload_prefilter но вместо этого сохраните переходный процесс с коротким сроком службы, который содержит предварительно обработанное имя файла.

После добавления приложения мы можем проверить это с помощью add_attachment() hook. Вы можете обновить заголовок приложения, заголовок или любые другие метаданные, которые вы хотите, используя сохраненное значение переходного процесса.

Наконец, вы удалите переходный процесс.

Я проверил этот метод и, похоже, работал над несколькими и отдельными загрузками приложений на моей установке localhost.

Хорошо, так вы можете сделать это с помощью кода.

Зацепите wp_handle_upload_prefilter и сохраните предварительно обработанное имя файла (без расширения) в качестве переходного процесса WordPress, используя set_transient

 add_action( 'wp_handle_upload_prefilter', '_remember_presanitized_filename' ); function _remember_presanitized_filename( $file ) { $file_parts = pathinfo( $file['name'] ); set_transient( '_set_attachment_title', $file_parts['filename'], 30 ); return $file; } 

Захват переходного параметра для обновления добавленного вложения

 add_action( 'add_attachment', '_set_attachment_title' ); function _set_attachment_title( $attachment_id ) { $title = get_transient( '_set_attachment_title' ); if ( $title ) { // to update attachment title and caption wp_update_post( array( 'ID' => $attachment_id, 'post_title' => $title, 'post_excerpt' => $title ) ); // to update other metadata update_post_meta( $attachment_id, '_wp_attachment_image_alt', $title ); // delete the transient for this upload delete_transient( '_set_attachment_title' ); } }