Як я можу завантажувати зображення та автоматично створювати публікації для кожного одночасно?


10

Я знаю, як завантажити кілька зображень у існуючу публікацію, але це інший сценарій. Це для великого каталогу активів, при цьому кожен користувацький пост після публікації представляє об’єкт зображення (таким чином, одне зображення призначається як "образне зображення" для кожної публікації).

Вся система чудово працює для створення індивідуальних активів, але занадто трудомістка. Мені потрібно мати можливість "пакетної" завантаження декількох зображень одночасно, потім створити нову публікацію для кожного зображення, а потім приєднати зображення до нової публікації як "образне зображення".

Не буде введено текстового вмісту для кожної публікації - лише деякі метадані та спеціальні призначення таксономії, тому під час цього процесу створення пакету повинно бути можливим пакетне присвоєння метаданих та таксономії.

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

Я відносно розбираюся в php, створивши плагіни та теми, але я наткнувся на те, як впоратися з цим процесом, оскільки це вимагає першого кроку отримання файлів на сервер у деякій тимчасовій якості, а потім генерування публікацій на основі файлів завантажено та призначити деякі ідентифікаційні метадані всій партії.

Я сподіваюся, що це можна зробити на спеціальній панелі адміністратора, але якщо мені доведеться це робити поза wp-admin, це теж добре ...

Ідеї?


Ви коли-небудь знаходили відповідь на це? Це було б ідеально для мене ...

Я це зробив ... але сценарій перетворився на цілий плагін для проекту. Це не конкретна коротка відповідь - мені доведеться документувати потік декількох функцій і гаків, які всі разом це виконують.
соматично

1
Підсумовуючи це, я насправді здійснив двоетапний процес, оскільки з редакційних причин насправді не створювали публікації про нерестимість для всього завантаженого користувачем. Натомість користувач завантажує всі зображення до однієї "пакетної" публікації у вигляді вкладень до цієї однієї публікації. Потім пакет перевіряється, і кожне вкладення приймається / відхиляється - і після того, як ця "пакетна" публікація фактично опублікована, користувацька програма збереження приймає кожну прийняту вкладення і використовує wp_insert_post () для створення публікації з таким самим вкладеним файлом як її представленим зображення.
соматично


Як ви додаєте метадані, як зображення пов'язані з даними?
Wyck

Відповіді:


5

Існує цей плагін: Плагін автоматичного представленого зображення

На сторінці плагіна:

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

По суті, кожне завантажене зображення генерує публікацію (обраного вами публікації) та встановлюється як обране зображення цієї публікації.

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

Знімок екрана плагіна

Щоб застосувати плагін на практиці - перейдіть до обраного типу публікації, відкрийте нову публікацію та завантажте медіа.

Для масового завантаження фотографій просто виділіть кілька фотографій у діалоговому вікні "Завантажити". Я підкреслюю тут 8 фотографій, але не бачу жодної причини, чому це не могло бути 80 чи 800, якщо немає меж, про які я не знаю у програмі для завантаження WordPress.

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

Назви публікацій встановлюються іменами файлів зображень. Ви повинні мати можливість працювати з цим і називати їх у своїй теміthe_title()

Я тестував місцево, і він працює в Wordpress 3.6.

Я впевнений, що існує більш надійний або гнучкий спосіб досягти цього, але в цьому випадку плагін, здається, робить саме те, що ви просите, за винятком призначення метаданих. Можливо, хтось інший міг би трохи розім'яти цю частину.

Якщо вам потрібен динамічно створений вміст публікації, ви можете принаймні почати з плагіна та повторити його звідти. Однією думкою було б використовувати постформати чи шаблони сторінок для визначення способу відображення публікацій.

Примітка. Переконайтеся, що у вас все image_sizeвстановлено в функции.php. Мені б не хотілося скасовувати / видаляти 10 000 фотографій або робити надзвичайно довгі "відновлювати мініатюри" лише тому, що я забув або змінив розмір зображення!


ви можете коментувати, коли ви звертаєтесь із головою - це було б набагато корисніше для покращення якості сайту.
timshutes

5

Цей скрипт є доказом концепції (перевірений і працюючий), він не плагін і призначений для злому, він передбачає кілька речей:

  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 );
    }   
}

Що-небудь понад кілька тисяч зображень вам, мабуть, буде легше:


Він постійно додає змінені зображення назад до папки завантаження / зображення, і для цього також створює нову публікацію. Процес став рекурсивним, тому перед тим, як я зняв цю функцію, було створено майже 800 постів. Нові розміри, що генеруються, слід робити у звичайному розташуванні wp-медіа
Хена Шах

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.