somatic
  • 0
Эксперт

Как я могу массово загружать изображения и автоматически создавать публикации для каждого из них одновременно?

  • 0

Я знаю, как загрузить несколько изображений в существующий пост, но это другой сценарий. Это для большого каталога ресурсов, где каждое сообщение пользовательского типа представляет собой изображение (таким образом, одно изображение назначается в качестве «избранного изображения» для каждого сообщения).

Вся система отлично работает для создания активов по одному, но требует слишком много времени. Мне нужно иметь возможность «пакетно» загружать несколько изображений одновременно, затем создавать новый пост для каждого изображения, а затем прикреплять изображение к новому сообщению как «избранное изображение».

Для каждого поста не будет введено текстовое содержимое — только некоторые метаданные и пользовательские назначения таксономии, поэтому должна быть возможность группового назначения метаданных и таксономии в процессе этого пакетного создания.

Я исследовал решения от создания сообщений XML-RPC (которые обычно не обрабатывают загрузку/назначение изображений) до плагинов, которые извлекают файлы из каталога сервера в медиатеку (что не охватывает создание сообщений), и jquery несколько файлов загрузчики (которые в основном просто выгружают файлы в каталог).

Я относительно хорошо разбираюсь в php, создав плагины и темы, но я не понимаю, как справиться с этим процессом, так как он требует первого шага доставки файлов на сервер в какой-то временной емкости, а затем создание сообщений на основе файлов загружены и присваивают некоторые идентифицирующие метаданные всему пакету.

Я надеюсь, что это можно сделать в пользовательской панели администратора, но если мне нужно сделать это вне wp-admin, это тоже нормально…

Идеи?

Share
  1. Вы когда-нибудь находили ответ на этот вопрос? Это было бы идеально для меня…

    • 0
  2. Существует этот плагин: Плагин для автоматических постов с избранными изображениями.

    Со страницы плагина:

    Автоматические сообщения с избранными изображениями создают новую публикацию с избранным изображением каждый раз, когда изображение загружается. На странице настроек плагина вы можете настроить изображение для публикации и назначить его одному из других существующих настраиваемых типов сообщений и/или форматов сообщений.

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

    Я установил это на свою локальную машину. Страница настроек выглядит следующим образом и позволяет вам выбрать, какой тип сообщения, включая настраиваемые типы сообщений, которому вы хотите назначить загрузку фотографий, и какой статус публикации вы хотите.

    Скриншот плагина

    Чтобы применить плагин на практике, перейдите к выбранному типу поста, откройте новый пост и загрузите медиафайл.

    Для массовой загрузки фотографий просто выделите несколько фотографий в диалоговом окне «Загрузить». Я выделяю здесь 8 фотографий, но не вижу причин, по которым их не может быть 80 или 800, если только в загрузчике изображений WordPress нет ограничений, о которых я не знаю.

    введите описание изображения здесь

    Заголовки сообщений задаются именами файлов изображений. Вы должны иметь возможность работать с этим и вызывать их в своей теме с помощьюthe_title()

    Я протестировал локально, и он работает в WordPress 3.6.

    Я уверен, что есть более надежный или гибкий способ сделать это, но в этом случае плагин, кажется, делает именно то, что вы просите, за исключением назначения метаданных. Может быть, кто-то еще мог бы немного конкретизировать эту часть.

    Если вам нужен динамически генерируемый пост-контент, вы можете, по крайней мере, начать с плагина и продолжить его. Одна из мыслей — использовать форматы постов или шаблоны страниц, чтобы определить, как будут отображаться посты.

    Примечание. Убедитесь, что все ваши image_size настройки установлены в functions.php. Я бы не хотел отменять/удалять 10 000 фотографий или запускать чрезвычайно длинную «регенерацию эскизов» только потому, что я забыл или изменил размер изображения!

    • 0
  3. Этот скрипт является доказательством концепции (протестирован и работает), это не плагин и предназначен для взлома, он предполагает несколько вещей:

    1. Он используется wp_insert_post, поэтому рекомендуется не подключать его к каким-либо администраторским крючкам, поэтому просто запустите его один раз!
    2. Изображения должны быть в wp-content\uploads папке, изменение этого потребует большего количества обручей для перехода. В примере используется пользовательская папка, которая называется \images в папке загрузки, вы можете изменить эту часть.
    3. Он не проверяет ошибки, я тестировал его только на папке с 20 изображениями, поэтому результаты могут отличаться 🙂

    Приведенный ниже код будет перебирать wp-content\uploads\images папку и создавать заголовок сообщения на основе имени прикрепленного к нему изображения. Вы, вероятно, захотите изменить это на что-то лучшее или, возможно, ввести метаданные, используя другие данные, которые у вас есть (возможно, Exif).

    function WPSE_1595_image_post() {
    
        // We need to use the default uploads dir
        $wp_upload_dir =  wp_upload_dir();
        // The actual folder
        $wp_upload_images = $wp_upload_dir['basedir'] . '/images';
    
        require_once(ABSPATH . 'wp-admin/includes/image.php');
    
        foreach (new DirectoryIterator($wp_upload_images) as $fileInfo) {
    
            if($fileInfo->isDot()) continue;
    
            $image_base = $fileInfo->getFilename();
            $image_name = pathinfo($fileInfo, PATHINFO_FILENAME);
    
            //Customize this post data as you wish
            $my_post_data = array(
                'post_title' => $image_name,
                'post_type' => 'post',
                'post_category' => array('1'),
                'post_author'   => 1,
                'post_status' => 'publish'
            );
    
            // We need the ID for the attachment
            $post_id = wp_insert_post($my_post_data);
    
            $wp_filetype = wp_check_filetype($image_base, null );
    
             //Customize this attachment data as you wish
            $attachment = array(
                 'guid' => $wp_upload_dir['url'] . '/' . $image_name, 
                 'post_mime_type' => $wp_filetype['type'],
                 'post_title' => 'child-' . $image_name,
                 'post_content' => '',
                 'post_status' => 'inherit'
            );
    
            $imagefile = $wp_upload_images . '/' . $image_base;
            $attach_id = wp_insert_attachment( $attachment, $imagefile, $post_id );
            $attach_data = wp_generate_attachment_metadata( $attach_id, $imagefile );
    
            wp_update_attachment_metadata( $attach_id, $attach_data );
        }   
    }
    

    Для всего, что превышает несколько тысяч изображений, вам, вероятно, будет проще использовать:

    • 0
  4. В вопросе «Очистка папки загрузки, структура базы данных медиа-библиотеки» есть несколько предложений по плагинам, которые могут быть связаны, хотя и не совсем так, как вы просите. Но возможно информация будет полезна.

    • 0

Оставить ответ

You must login to add an answer.