Làm cách nào tôi có thể tải lên hàng loạt hình ảnh và tự động tạo bài đăng cho từng người cùng một lúc?


10

Tôi biết cách tải lên nhiều hình ảnh vào một bài đăng hiện có, nhưng đây là một kịch bản khác. Đây là một danh mục tài sản lớn, với mỗi bài đăng loại bài tùy chỉnh đại diện cho một tài sản hình ảnh (do đó, một hình ảnh duy nhất được chỉ định là "hình ảnh đặc trưng" cho mỗi bài đăng).

Toàn bộ hệ thống hoạt động tuyệt vời cho việc tạo tài sản một lần, nhưng quá tốn thời gian. Tôi cần có thể "bó" tải lên nhiều hình ảnh cùng một lúc, sau đó tạo một bài đăng mới cho mỗi hình ảnh, sau đó đính kèm hình ảnh vào bài đăng mới dưới dạng "hình ảnh đặc trưng".

Sẽ không có nội dung văn bản nào được nhập cho mỗi bài đăng - chỉ có một số bài tập phân loại siêu dữ liệu và phân loại tùy chỉnh, do đó có thể gán hàng loạt siêu dữ liệu và phân loại trong quá trình tạo lô này.

Tôi đã nghiên cứu các giải pháp từ việc tạo bài đăng XML-RPC (thường không xử lý việc tải lên / gán hình ảnh) cho các plugin kéo các tệp từ thư mục máy chủ đến thư viện phương tiện (không bao gồm việc tạo bài đăng) và jquery nhiều tệp trình tải lên (về cơ bản chỉ là kết xuất tập tin trong một thư mục).

Tôi tương đối thành thạo php, đã xây dựng các plugin và chủ đề, nhưng tôi không biết làm thế nào để xử lý quá trình này, vì nó yêu cầu bước đầu tiên để đưa các tệp đến máy chủ trong một số khả năng tạm thời, sau đó tạo các bài đăng dựa trên các tệp đã tải lên và gán một số siêu dữ liệu xác định cho toàn bộ lô.

Tôi hy vọng điều này có thể được thực hiện trong bảng quản trị tùy chỉnh, nhưng nếu tôi phải làm điều này ngoài wp-admin, điều đó cũng tốt ...

Ý tưởng?


Bạn đã bao giờ tìm thấy một câu trả lời cho điều này? Điều này sẽ hoàn hảo đối với tôi ...

Tôi đã làm ... nhưng kịch bản phát triển thành một plugin toàn bộ khung cho dự án. Đây không phải là một câu trả lời ngắn đặc biệt - Tôi phải ghi lại luồng của nhiều hàm và các móc nối mà tất cả cùng thực hiện điều này.
somatic

1
Tóm lại, tôi thực sự đã thực hiện một quy trình gồm hai bước, vì lý do biên tập, nó không có ý nghĩa để thực sự sinh ra các bài đăng cho mọi thứ mà người dùng đã tải lên. Thay vào đó, người dùng tải lên tất cả các hình ảnh vào một bài đăng "lô" dưới dạng tệp đính kèm cho bài đăng đó. Sau đó, lô được xem xét và mỗi tệp đính kèm được chấp nhận / từ chối - và một khi bài đăng "lô" đó thực sự được xuất bản, một thói quen lưu tùy chỉnh sẽ lấy từng tệp đính kèm được chấp nhận và sử dụng wp_insert_post () để tạo một bài đăng chỉ với tệp đính kèm đó như đặc trưng của nó hình ảnh.
somatic


Làm thế nào để bạn thêm dữ liệu meta, hình ảnh liên quan đến dữ liệu như thế nào?
Wyck

Câu trả lời:


5

Có plugin này: Plugin bài viết hình ảnh tự động nổi bật

Từ trang plugin:

Bài viết hình ảnh nổi bật tự động tạo một bài đăng mới với một hình ảnh nổi bật mỗi khi hình ảnh được tải lên. Thông qua trang cài đặt plugin, bạn có thể đặt hình ảnh để xuất bản và gán nó cho một trong các loại bài đăng tùy chỉnh hiện có khác và / hoặc định dạng bài đăng.

Về cơ bản, mỗi hình ảnh được tải lên sẽ tạo ra một bài đăng (thuộc loại bài đăng bạn đã chọn) và được đặt làm hình ảnh đặc trưng của bài đăng đó.

Tôi đã cài đặt nó trên máy cục bộ của tôi. Trang cài đặt trông như thế này và cho phép bạn chọn loại bài đăng, bao gồm các loại bài đăng tùy chỉnh, bạn muốn chỉ định tải lên ảnh và trạng thái xuất bản mà bạn muốn.

Ảnh chụp màn hình của plugin

Để đưa plugin vào thực tế - điều hướng đến loại bài đăng bạn đã chọn, hãy mở một bài đăng mới và tải lên phương tiện truyền thông.

Để tải lên hàng loạt ảnh, chỉ cần tô sáng nhiều ảnh trong hộp thoại "tải lên". Tôi đang làm nổi bật 8 bức ảnh ở đây, nhưng tôi không thấy lý do tại sao nó không thể là 80 hoặc 800, trừ khi có những giới hạn mà tôi không biết về trình tải lên hình ảnh wordpress.

nhập mô tả hình ảnh ở đây

Tiêu đề của bài viết được đặt theo tên tệp hình ảnh. Bạn sẽ có thể làm việc với điều đó và gọi họ trong chủ đề của bạn vớithe_title()

Tôi đã thử nghiệm cục bộ và nó hoạt động trong Wordpress 3.6.

Tôi chắc chắn có một cách mạnh mẽ hoặc linh hoạt hơn để thực hiện điều này, nhưng trong trường hợp này, plugin dường như thực hiện chính xác những gì bạn yêu cầu, ngoại trừ việc gán dữ liệu meta. Có lẽ người khác có thể thịt phần đó ra một chút.

Nếu bạn cần nội dung bài đăng được tạo động, ít nhất bạn có thể bắt đầu với plugin và lặp lại từ đó. Một người nghĩ rằng sẽ phải sử dụng định dạng bài đăng hoặc mẫu trang để xác định cách bài viết được hiển thị.

Lưu ý: Đảm bảo rằng bạn có tất cả image_sizecác tập hợp của bạn trong Hàm.php. Tôi ghét phải hoàn tác / xóa 10.000 ảnh hoặc chạy một "hình thu nhỏ" cực kỳ dài chỉ vì tôi quên hoặc thay đổi kích thước hình ảnh!


bạn nên bình luận khi bạn downvote - nó sẽ hữu ích hơn nhiều để cải thiện chất lượng của trang web.
timshutes

5

Kịch bản này là một bằng chứng về khái niệm (đã được thử nghiệm và hoạt động), nó không phải là một plugin và có nghĩa là bị hack, nó giả định một vài điều:

  1. Nó sử dụng wp_insert_postvì vậy nó khuyên bạn không nên móc nó vào bất kỳ hook quản trị nào, vì vậy hãy chạy nó một lần!
  2. Các hình ảnh phải nằm trong wp-content\uploadsthư mục, việc thay đổi này sẽ đòi hỏi nhiều vòng hơn để nhảy qua. Ví dụ sử dụng một thư mục tùy chỉnh được gọi \imagestrong thư mục tải lên, bạn có thể thay đổi phần này.
  3. Nó không thực hiện bất kỳ kiểm tra lỗi nào, tôi chỉ kiểm tra nó trên một thư mục có 20 hình ảnh để kết quả có thể thay đổi :)

Mã dưới đây sẽ lặp qua wp-content\uploads\imagesthư mục và tạo tiêu đề bài viết dựa trên tên của hình ảnh được đính kèm. Bạn có thể muốn thay đổi điều này thành một cái gì đó tốt hơn hoặc có thể nhập dữ liệu meta bằng cách sử dụng dữ liệu khác mà bạn có (Exif có thể).

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

Đối với bất cứ điều gì hơn một vài nghìn hình ảnh, bạn có thể có một thời gian dễ dàng hơn bằng cách sử dụng:


Nó tiếp tục thêm hình ảnh đã thay đổi kích thước trở lại thư mục tải lên / hình ảnh và đồng thời, nó cũng tạo ra bài đăng mới. Quá trình trở nên đệ quy vì vậy trước khi tôi loại bỏ chức năng, gần 800 bài viết đã được tạo. Kích thước mới được tạo nên được thực hiện ở vị trí phương tiện wp thông thường.
Heena Shah

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.