ฉันจะอัปโหลดภาพจำนวนมากและสร้างโพสต์สำหรับแต่ละภาพในเวลาเดียวกันโดยอัตโนมัติได้อย่างไร


10

ฉันรู้วิธีอัปโหลดภาพหลายภาพในโพสต์ที่มีอยู่ แต่นี่เป็นสถานการณ์ที่แตกต่าง นี่คือแคตตาล็อกเนื้อหาขนาดใหญ่โดยมีโพสต์ประเภทกำหนดเองแต่ละรายการที่แสดงเนื้อหารูปภาพ (ดังนั้นรูปภาพเดียวจะถูกกำหนดเป็น "รูปภาพเด่น" สำหรับแต่ละโพสต์)

ทั้งระบบใช้งานได้ดีสำหรับการสร้างสินทรัพย์แบบครั้งต่อครั้ง แต่ใช้เวลานานเกินไป ฉันต้องสามารถ "แบตช์" อัปโหลดภาพหลายภาพในครั้งเดียวจากนั้นสร้างโพสต์ใหม่สำหรับแต่ละภาพจากนั้นแนบภาพไปที่โพสต์ใหม่ในชื่อ "ภาพเด่น"

จะไม่มีเนื้อหาข้อความที่ป้อนสำหรับแต่ละโพสต์ - เพียงบางส่วนของการกำหนดเมตาดาต้าและอนุกรมวิธานที่กำหนดเองดังนั้นจึงเป็นไปได้ที่จะแบทช์กำหนดเมทาดาทาและอนุกรมวิธานในระหว่างกระบวนการสร้างแบทช์นี้

ฉันได้ค้นคว้าวิธีการแก้ปัญหาจากการสร้างโพสต์ XML-RPC (ซึ่งมักจะไม่จัดการกับการอัพโหลด / กำหนดภาพ) ไปยังปลั๊กอินที่ดึงไฟล์จากไดเรกทอรีเซิร์ฟเวอร์ไปยังไลบรารีสื่อ (ซึ่งไม่ครอบคลุมการสร้างโพสต์) และ jquery หลายไฟล์ ตัวอัปโหลด (ซึ่งโดยทั่วไปเป็นเพียงการถ่ายโอนไฟล์ในไดเรกทอรี)

ฉันค่อนข้างเชี่ยวชาญใน PHP มีปลั๊กอินและธีมในตัว แต่ฉันนิ่งงันว่าจะจัดการกับกระบวนการนี้อย่างไรเนื่องจากต้องใช้ขั้นตอนแรกของการรับไฟล์ไปยังเซิร์ฟเวอร์ด้วยความจุชั่วคราวจากนั้นสร้างโพสต์ตามไฟล์ อัปโหลดและกำหนดเมตาดาต้าที่ระบุบางอย่างให้กับทั้งชุด

ฉันหวังว่าสิ่งนี้สามารถทำได้ในแผงผู้ดูแลระบบที่กำหนดเอง แต่ถ้าฉันต้องทำสิ่งนี้นอก wp-admin ก็ไม่เป็นไร ...

ไอเดีย?


คุณเคยพบคำตอบนี้หรือไม่? นี้จะสมบูรณ์แบบสำหรับฉัน ...

ฉันทำ ... แต่สถานการณ์กลายเป็นปลั๊กอินเฟรมเวิร์กทั้งหมดสำหรับโครงการ ไม่ใช่คำตอบสั้น ๆ โดยเฉพาะ - ฉันต้องบันทึกการไหลของฟังก์ชั่นและฟังก์ชั่นที่หลากหลายซึ่งทั้งหมดนี้จะทำให้สำเร็จ
โซมาติก

1
โดยสรุปแล้วฉันได้ทำสองขั้นตอนจริงๆแล้วเนื่องจากเหตุผลทางบรรณาธิการมันไม่สมเหตุสมผลเลยที่จะวางไข่โพสต์สำหรับทุกสิ่งที่ผู้ใช้อัปโหลด แต่ผู้ใช้อัปโหลดภาพทั้งหมดไปยังโพสต์ "แบทช์" เดียวเป็นสิ่งที่แนบมากับโพสต์เดียว จากนั้นชุดจะได้รับการตรวจสอบและแต่ละสิ่งที่แนบมาได้รับการยอมรับ / ปฏิเสธ - และเมื่อโพสต์ "แบทช์" ถูกเผยแพร่จริงชุดคำสั่งบันทึกที่กำหนดเองจะนำไฟล์แนบที่ยอมรับแล้วแต่ละชุดและใช้ wp_insert_post () ภาพ.
โซมาติก


คุณเพิ่มข้อมูลเมตาอย่างไรภาพที่เกี่ยวข้องกับข้อมูลเป็นอย่างไร
Wyck

คำตอบ:


5

มีปลั๊กอินนี้: ปลั๊กอินโพสต์ภาพเด่นอัตโนมัติ

จากหน้าปลั๊กอิน:

โพสต์รูปภาพเด่นอัตโนมัติสร้างโพสต์ใหม่พร้อมรูปภาพเด่นทุกครั้งที่มีการอัพโหลดรูปภาพ ผ่านหน้าการตั้งค่าปลั๊กอินคุณสามารถตั้งค่าภาพเพื่อเผยแพร่และกำหนดตัวเองให้เป็นหนึ่งในประเภทโพสต์ที่กำหนดเองและ / หรือรูปแบบโพสต์อื่นที่มีอยู่ของคุณ

โดยทั่วไปรูปภาพทุกรูปที่อัปโหลดจะสร้างโพสต์ (ของประเภทโพสต์ที่คุณเลือก) และตั้งเป็นรูปภาพเด่นของโพสต์นั้น

ฉันติดตั้งสิ่งนี้ในเครื่องท้องถิ่นของฉัน หน้าการตั้งค่ามีลักษณะเช่นนี้และช่วยให้คุณเลือกประเภทโพสต์รวมถึงประเภทโพสต์ที่กำหนดเองคุณต้องการกำหนดการอัปโหลดภาพถ่ายและสถานะการเผยแพร่ที่คุณต้องการ

สกรีนช็อตของปลั๊กอิน

หากต้องการนำปลั๊กอินไปใช้จริง - ไปที่ประเภทโพสต์ที่คุณเลือกเปิดโพสต์ใหม่และอัปโหลดสื่อ

หากต้องการอัปโหลดรูปภาพจำนวนมากเพียงไฮไลต์ภาพถ่ายหลายภาพในกล่องโต้ตอบ "อัปโหลด" ฉันกำลังไฮไลต์รูปถ่าย 8 รูปที่นี่ แต่ฉันเห็นเหตุผลว่าทำไมมันไม่สามารถเป็น 80 หรือ 800 ได้เว้นแต่จะมีข้อ จำกัด ที่ฉันไม่ทราบในตัวอัปโหลดรูปภาพ wordpress

ป้อนคำอธิบายรูปภาพที่นี่

ชื่อของโพสต์ถูกตั้งค่าโดยชื่อไฟล์ภาพ คุณควรจะสามารถทำงานกับสิ่งนั้นและโทรหาพวกเขาในธีมของคุณด้วยthe_title()

ฉันทดสอบในพื้นที่และมันทำงานใน Wordpress 3.6

ฉันแน่ใจว่ามีวิธีที่แข็งแกร่งหรือยืดหยุ่นกว่าในการทำสิ่งนี้ให้สำเร็จ แต่ในกรณีนี้ปลั๊กอินดูเหมือนว่าจะทำสิ่งที่คุณขออย่างแน่นอนยกเว้นการกำหนด meta-data บางทีอาจมีคนอื่นที่สามารถแยกส่วนออกมาเล็กน้อย

หากคุณต้องการสร้างเนื้อหาโพสต์แบบไดนามิกอย่างน้อยคุณสามารถเริ่มต้นด้วยปลั๊กอินและทำซ้ำจากที่นั่น มีใครคิดว่าจะมีการใช้รูปแบบโพสต์หรือเทมเพลตหน้าเพื่อกำหนดวิธีการแสดงโพสต์

หมายเหตุ:ตรวจสอบให้แน่ใจว่าคุณได้image_sizeตั้งค่าทั้งหมดไว้ใน ฉันเกลียดที่จะต้องยกเลิก / ลบ 10,000 ภาพหรือใช้ "สร้างภาพขนาดย่อ" ที่ยาวมากเพียงเพราะฉันลืมหรือเปลี่ยนขนาดภาพ!


คุณควรแสดงความคิดเห็นเมื่อคุณลงคะแนน - มันจะมีประโยชน์มากขึ้นในการปรับปรุงคุณภาพของเว็บไซต์
timshutes

5

สคริปต์นี้เป็นหลักฐานของแนวคิด (ทดสอบและใช้งานได้) ไม่ใช่ปลั๊กอินและมีไว้เพื่อแฮ็คข้อมูลจะถือว่ามีบางสิ่ง:

  1. มันใช้wp_insert_postดังนั้นจึงแนะนำให้คุณไม่ขอมันลงใน hooks hooks ของผู้ดูแลระบบใด ๆ ดังนั้นเพียงแค่เรียกใช้ครั้งเดียว!
  2. รูปภาพจะต้องอยู่ในwp-content\uploadsโฟลเดอร์การเปลี่ยนแปลงนี้จะต้องมีห่วงเพิ่มเติมเพื่อข้ามไป ตัวอย่างใช้โฟลเดอร์ที่กำหนดเองที่เรียกว่า\imagesในโฟลเดอร์อัพโหลดคุณสามารถเปลี่ยนส่วนนี้
  3. มันไม่ได้ทำการตรวจสอบข้อผิดพลาดใด ๆ ฉันทดสอบเฉพาะในโฟลเดอร์ที่มี 20 ภาพดังนั้นผลลัพธ์อาจแตกต่างกัน :)

รหัสด้านล่างจะวนซ้ำผ่านwp-content\uploads\imagesโฟลเดอร์และสร้างชื่อโพสต์ตามชื่อของภาพที่แนบมา คุณอาจต้องการเปลี่ยนสิ่งนี้ให้ดีขึ้นหรืออาจเป็นไปได้ว่าป้อนข้อมูลเมตาโดยใช้ข้อมูลอื่นที่คุณมี

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 ปกติ
Heena Shah

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.