วิธีทำซ้ำหน้าหรือโพสต์ใน WordPress
เผยแพร่แล้ว: 2021-08-26กำลังค้นหาวิธีการทำซ้ำหน้า WordPress โพสต์หรือเนื้อหาประเภทอื่นหรือไม่?
ความสามารถในการทำซ้ำเนื้อหา WordPress ได้อย่างง่ายดายนั้นมีประโยชน์ในทุกสถานการณ์ ตั้งแต่การสร้างเนื้อหาที่คล้ายกันจำนวนมากไปจนถึงการอัปเดตเนื้อหาที่เก่ากว่า ไปจนถึงการปรับแต่งการออกแบบ และอื่นๆ
ในหลายกรณี มันไม่ใช่แค่การคัดลอกและวางข้อความระหว่างหน้าต่างๆ นอกเหนือจากเนื้อหาที่คุณสร้างขึ้น คุณอาจต้องการรักษาการออกแบบและการตั้งค่าของโพสต์ไว้ เช่น หมวดหมู่ แท็ก ผู้เขียน ฟิลด์ที่กำหนดเอง และข้อมูลเมตาอื่นๆ
ในบทความนี้ เราจะให้คำแนะนำที่ครอบคลุมเกี่ยวกับวิธีการทำซ้ำหน้า WordPress, โพสต์ และอื่นๆ โดยใช้โซลูชันฟรี 100%
ในตอนท้าย คุณจะสามารถทำซ้ำเนื้อหาใดๆ บนไซต์ของคุณได้ด้วยการคลิกปุ่ม - มาเริ่มกันเลย
สารบัญ
- วิธีทำซ้ำโพสต์หรือหน้าใน WordPress: สามวิธี
- วิธีทำซ้ำหน้า WordPress โดยใช้ปลั๊กอิน
- โพสต์ซ้ำของ Yoast
- โพสต์ซ้ำ
- WooCommerce
- วิธีทำซ้ำหน้า WordPress โดยใช้ตัวแก้ไข
- ตัวแก้ไขบล็อก (Gutenberg)
- Elementor
- วิธีทำซ้ำหน้า WordPress ด้วยตนเองด้วย Code
วิธีทำซ้ำโพสต์หรือหน้าใน WordPress: สามวิธี
มีสามวิธีหลักที่คุณสามารถใช้เพื่อทำซ้ำหน้า WordPress โพสต์ หรือประเภทโพสต์ที่กำหนดเองอื่นๆ:
- ปลั๊กอิน – วิธีที่ง่ายที่สุดในการทำสำเนาโพสต์หรือหน้าคือการใช้ปลั๊กอินเฉพาะจำนวนมาก (ซึ่งส่วนใหญ่ฟรี)
- ตัวแก้ไข – ขึ้นอยู่กับว่าคุณต้องการทำซ้ำเนื้อหาอย่างละเอียดเพียงใด คุณอาจใช้ตัวแก้ไขได้หากคุณสนใจเฉพาะการทำซ้ำเนื้อหาและการออกแบบเท่านั้น
- รหัสด้วยตนเอง – สำหรับผู้ที่ทำเอง คุณสามารถเพิ่มโค้ดที่กำหนดเองลงในไฟล์ functions.php ของธีมลูกของคุณได้
เราจะครอบคลุมทั้งสามวิธี – ไปดูกันเลย…
วิธีทำซ้ำหน้า WordPress โดยใช้ปลั๊กอิน
มีปลั๊กอินมากมายที่ทำให้ง่ายต่อการทำซ้ำโพสต์ หน้า หรือเนื้อหาอื่นๆ บนไซต์ของคุณ
หากคุณมีร้านค้า WooCommerce WooCommerce จะรวมคุณสมบัติในตัวของมันเองเพื่อทำซ้ำผลิตภัณฑ์ – เพิ่มเติมที่ด้านล่าง และหากไม่เป็นเช่นนั้น คุณจะพบปลั๊กอินฟรีมากมายที่ WordPress.org รวมถึงสิ่งต่อไปนี้:
- โพสต์ซ้ำของ Yoast
- โพสต์ซ้ำ
- หน้าซ้ำ
- โพสต์ Duplicator
- หน้าและโพสต์ซ้ำ
นอกจาก WooCommerce แล้ว เราจะแสดงให้คุณเห็นว่ามันทำงานอย่างไรกับปลั๊กอินฟรีสองตัวจากรายการด้านบน:
- Yoast Duplicate Post เนื่องจากใช้งานง่ายมากและมีคุณลักษณะ "เขียนซ้ำและเผยแพร่ซ้ำ" ที่ไม่เหมือนใครซึ่งเหมาะสำหรับการอัปเดตเนื้อหาที่มีอยู่
- โพสต์ซ้ำ เนื่องจากช่วยให้คุณควบคุมได้ละเอียดยิ่งขึ้นในบางพื้นที่
ปลั๊กอินทั้งสองนั้นฟรี และเรายังทดสอบทั้งคู่เพื่อให้แน่ใจว่าใช้งานได้กับทั้งการออกแบบ Elementor และเนื้อหาที่สร้างด้วยตัวแก้ไข WordPress ดั้งเดิม เราคิดว่าปลั๊กอินอื่นๆ ทั้งหมดจากด้านบนจะทำงานกับ Elementor ได้เช่นกัน แม้ว่าเราจะไม่ได้ทำการทดสอบโดยเฉพาะก็ตาม
โพสต์ซ้ำของ Yoast
ก่อนอื่น มาดู Yoast Duplicate Post กันก่อน ปลั๊กอินนี้ยอดเยี่ยมหากคุณต้องการวิธีที่รวดเร็วและง่ายดายในการทำซ้ำโพสต์ หน้า หรือประเภทโพสต์ที่กำหนดเองอื่นๆ
นอกเหนือจากการอนุญาตให้คุณโคลนเนื้อหาแล้ว ยังมีคุณลักษณะการเขียนซ้ำและเผยแพร่ซ้ำที่ไม่เหมือนใครซึ่งช่วยให้คุณอัปเดตเนื้อหาที่มีอยู่ได้ โดยพื้นฐานแล้ว คุณลักษณะนี้ช่วยให้คุณสามารถทำซ้ำเนื้อหาเพื่อทำการเปลี่ยนแปลง จากนั้น "รวม" เวอร์ชันที่ซ้ำกันกลับเป็นเวอร์ชันเดิมเมื่อคุณต้องการทำให้การเปลี่ยนแปลงมีผลจริง
ในการเริ่มต้น ให้ติดตั้งและเปิดใช้งานปลั๊กอิน Yoast Duplicate Post ฟรีจาก WordPress.org
ตอนนี้ คุณมีหลายวิธีในการทำซ้ำเนื้อหา
ขั้นแรก คุณสามารถไปที่รายการ โพสต์ หรือ เพจ หลักได้ หากคุณวางเมาส์เหนือรายการในรายการ คุณจะเห็นสามตัวเลือก:
- โคลน – ทำซ้ำเนื้อหาและเก็บแท็บเบราว์เซอร์ของคุณไว้ในรายการโพสต์/หน้า
- ร่างใหม่ – ทำซ้ำเนื้อหาและเปิดตัวแก้ไขสำหรับเนื้อหาที่ซ้ำกันเพื่อให้คุณสามารถเริ่มทำงานได้ทันที
- เขียนซ้ำและเผยแพร่ซ้ำ – นี่เป็นคุณลักษณะที่มีประโยชน์สำหรับการอัปเดตเนื้อหาเก่า ดังที่เราได้กล่าวไว้ข้างต้น ความแตกต่างที่สำคัญคือมันจะช่วยให้คุณรวมเนื้อหากลับเข้าไปในโพสต์เดิมเมื่อคุณทำเสร็จแล้ว
วิธีที่ง่ายที่สุดคือเพียงคลิก Clone จากนั้น คุณจะเห็นรายการฉบับร่างใหม่สำหรับเนื้อหาที่ซ้ำกันปรากฏในรายการ ปลั๊กอินจะทำเครื่องหมายด้วย "Customization Draft" เพื่อแจ้งให้คุณทราบว่าเป็นเวอร์ชันที่ซ้ำกัน:
ประการที่สอง คุณสามารถทำซ้ำเนื้อหาจากภายในตัวแก้ไข WordPress ได้ คุณจะพบตัวเลือกเหล่านี้ในส่วน สถานะและการมองเห็น ของแถบด้านข้างของ โพสต์/หน้า :
สุดท้าย คุณยังสามารถทำซ้ำโพสต์หรือเพจจำนวนมากได้โดยใช้ตัวเลือกของปลั๊กอินในรายการการทำงานแบบกลุ่มแบบเลื่อนลงของรายการ โพสต์ หรือ เพจ :
- ใช้ช่องทำเครื่องหมายเพื่อเลือกโพสต์หรือหน้าทั้งหมดที่คุณต้องการทำซ้ำ
- เลือกวิธีการทำซ้ำจากเมนูแบบเลื่อนลง – Clone หรือ Rewrite & Republish
- คลิก สมัคร
หากคุณต้องการปรับแต่งการทำงานของปลั๊กอิน คุณสามารถไปที่การ ตั้งค่า → โพสต์ซ้ำ พื้นที่นี้ช่วยให้คุณ:
- เลือกเนื้อหาที่จะทำซ้ำ
- เพิ่มคำนำหน้าหรือคำต่อท้ายแบบกำหนดเองให้กับชื่อเรื่องของเนื้อหาที่ซ้ำกัน
- เลือกวิธีการสั่งซื้อเนื้อหาที่ซ้ำกันในเมนู
- เลือกประเภทโพสต์เพื่อให้มีสิทธิ์ทำซ้ำ
- เลือกบทบาทของผู้ใช้ที่มีความสามารถในการทำซ้ำเนื้อหา
- ปรับแต่งตำแหน่งที่จะแสดงลิงก์/ปุ่มของโพสต์ที่ซ้ำกัน
โพสต์ซ้ำ
Duplicate Post ทำหน้าที่พื้นฐานเหมือนกับ Yoast Duplicate Post ซึ่งทำให้ง่ายต่อการทำซ้ำโพสต์หรือเพจอย่างรวดเร็ว
ข้อดีบางประการของปลั๊กอินนี้เหนือ Yoast Duplicate Post คือ:
- ให้คุณทำซ้ำโพสต์/หน้าได้หลายครั้งด้วยคลิกเดียว ตัวอย่างเช่น คุณสามารถบอกให้สร้างสำเนาสี่ชุด
- ช่วยให้คุณควบคุมเนื้อหาที่คุณทำซ้ำระหว่างโพสต์ได้มากขึ้นเล็กน้อย
- มีคุณลักษณะในการสแกนไซต์ของคุณเพื่อหาเนื้อหาที่ซ้ำกัน ซึ่งเป็นประโยชน์สำหรับการค้นหารายการที่ซ้ำกันอย่างรวดเร็ว
- ให้คุณคัดลอกเนื้อหาระหว่างไซต์เครือข่ายหลายไซต์ของ WordPress รวมถึงไซต์ในโดเมนย่อย (แม้ว่าคุณลักษณะนี้ต้องใช้ปลั๊กอินพรีเมียม 19.98 ดอลลาร์)
- ให้ตัวเลือกในการแปลงโพสต์เป็นเพจและในทางกลับกัน (ต้องใช้เวอร์ชันพรีเมียมด้วย)
หากคุณไม่ต้องการคุณสมบัติเหล่านั้น เราขอแนะนำให้ใช้ Yoast Duplicate Post เนื่องจากเป็นที่นิยมมากกว่าและทำงานให้เสร็จลุล่วง แต่ถ้าคุณต้องการคุณสมบัติเหล่านั้น นี่เป็นอีกตัวเลือกที่ดีที่ควรพิจารณา
ในการเริ่มต้น ให้ติดตั้งและเปิดใช้งานปลั๊กอิน Duplicate Post ฟรีจาก WordPress.org ทันทีที่คุณเปิดใช้งาน มันจะเริ่มทำงาน
ไปที่รายการ โพสต์/หน้า แล้ววางเมาส์เหนือส่วนของเนื้อหาที่คุณต้องการทำซ้ำ คุณจะเห็นตัวเลือกใหม่ในการ คัดลอก หากคุณวางเมาส์เหนือรายการนั้น คุณจะขยายการตั้งค่าเพิ่มเติมบางอย่างเพื่อเลือกจำนวนสำเนาที่จะสร้างและการตั้งค่าที่จะใช้ (เพิ่มเติมในวินาที):
เช่นเดียวกับ Yoast Duplicate Post คุณยังสามารถใช้ช่องทำเครื่องหมายและการดำเนินการแบบกลุ่มเลื่อนลงเพื่อคัดลอกหลายโพสต์จำนวนมาก
ในการกำหนดการตั้งค่าของปลั๊กอิน คุณสามารถไปที่แท็บ คัดลอกและลบโพสต์ใหม่ ในแดชบอร์ด WordPress ของคุณ นี่คือที่ที่คุณสามารถกำหนดการตั้งค่าทั้งหมดรวมถึง:
- เนื้อหาใดที่จะทำซ้ำ
- ใครสามารถทำซ้ำเนื้อหา
- โพสต์ที่กำหนดเองประเภทใดที่จะเปิดใช้งานการทำซ้ำได้
- เป็นต้น
ข้อดีอย่างหนึ่งคือคุณสามารถสร้างโปรไฟล์การตั้งค่าได้หลายแบบและเลือกการกำหนดค่าที่จะใช้เมื่อคุณทำซ้ำเนื้อหา
หากคุณเลื่อนไปที่ด้านล่างของพื้นที่การตั้งค่า คุณจะพบคุณลักษณะในการสแกนหาเนื้อหาที่ซ้ำกันบนไซต์ของคุณ:
อีกครั้ง หากคุณต้องการวิธีง่ายๆ ในการทำซ้ำเนื้อหา เราขอแนะนำให้ใช้ปลั๊กอิน Yoast Duplicate Post แต่ถ้าฟีเจอร์เหล่านี้ดึงดูดสายตาคุณ Duplicate Post ก็ใช้งานได้ดีเช่นกัน
WooCommerce
หากคุณกำลังใช้ WooCommerce เพื่อสร้างร้านค้าอีคอมเมิร์ซ WooCommerce มีฟีเจอร์ในตัวของมันเองเพื่อทำซ้ำผลิตภัณฑ์ – ไม่จำเป็นต้องติดตั้งปลั๊กอินแยกต่างหาก
หากต้องการทำซ้ำผลิตภัณฑ์ ให้ไปที่พื้นที่ ผลิตภัณฑ์ ในแดชบอร์ดของคุณ จากนั้น วางเมาส์เหนือผลิตภัณฑ์ที่คุณต้องการทำซ้ำ แล้วคลิก ทำสำเนา :
คุณยังสามารถทำสำเนาผลิตภัณฑ์จากภายในตัวแก้ไขผลิตภัณฑ์ได้ด้วยการคลิกตัวเลือก คัดลอกไปยังฉบับร่างใหม่ ภายใต้การตั้งค่า เผยแพร่ :
หมายเหตุ – ตัวเลือกเหล่านี้จะปรากฏบนผลิตภัณฑ์เท่านั้น หากคุณต้องการทำซ้ำบทความและหน้า คุณจะต้องติดตั้งปลั๊กอินตัวใดตัวหนึ่งจากด้านบน
วิธีทำซ้ำหน้า WordPress โดยใช้ตัวแก้ไข
หากคุณกังวลเกี่ยวกับการทำซ้ำเนื้อหา/การออกแบบของโพสต์หรือหน้าเป็นหลัก คุณอาจไม่มีปัญหาหากไม่มีปลั๊กอินด้วยคุณสมบัติตัวแก้ไขในตัว
ในส่วนนี้ เราจะแสดงวิธีทำซ้ำการออกแบบที่คุณสร้างขึ้นอย่างรวดเร็วด้วยตัวแก้ไขบล็อกดั้งเดิม (Gutenberg) หรือ Elementor
สิ่งสำคัญที่ควรทราบคือวิธีการทั้งสองนี้จะทำซ้ำเฉพาะเนื้อหาและการออกแบบ คุณจะต้องสร้างข้อมูลเมตาที่สำคัญขึ้นมาใหม่ด้วยตนเอง เช่น ชื่อ หมวดหมู่ แท็ก ฟิลด์ที่กำหนดเอง ฯลฯ
ตัวแก้ไขบล็อก (Gutenberg)
หากต้องการทำซ้ำเนื้อหาจากตัวแก้ไขบล็อกอย่างรวดเร็ว ให้เริ่มต้นด้วยการเปิดตัวแก้ไขสำหรับโพสต์หรือหน้าที่คุณต้องการทำซ้ำ
คลิกไอคอน สามจุด ที่มุมบนขวาเพื่อขยายเมนู จากนั้นเลือกตัวเลือกเพื่อ คัดลอกเนื้อหาทั้งหมด :
ตอนนี้สร้างโพสต์หรือหน้าใหม่ จากนั้นคลิกในตัวแก้ไขและวางเนื้อหา คุณสามารถ:
- ใช้แป้นพิมพ์ลัด เช่น Ctrl + V หรือ Cmd + V
- คลิกขวาและเลือกวาง
คุณควรเห็นสำเนาของเนื้อหาต้นฉบับในโปรแกรมแก้ไข อย่างไรก็ตาม คุณจะต้องแน่ใจว่าได้เพิ่มชื่อ หมวดหมู่ แท็ก ฯลฯ ด้วยตนเอง
Elementor
หมายเหตุ – คุณสามารถทำซ้ำหน้าหรือโพสต์ที่สร้างด้วย Elementor โดยใช้ปลั๊กอินที่เรากล่าวถึงข้างต้น แต่ถ้าคุณกังวลเกี่ยวกับการทำซ้ำการออกแบบโพสต์/หน้าของ Elementor เป็นหลัก (แทนที่จะเป็นข้อมูลเมตาอื่นๆ เช่น ผู้แต่งและหมวดหมู่) คุณสามารถทำได้โดยใช้ระบบเทมเพลตของ Elementor
เรามีคำแนะนำเกี่ยวกับวิธีการทำซ้ำหน้า Elementor แต่นี่เป็นแนวคิดพื้นฐาน
ขั้นแรก คุณสามารถบันทึกการออกแบบของคุณเป็นเทมเพลตจากอินเทอร์เฟซตัวแก้ไข Elementor:
จากนั้น คุณสามารถสร้างโพสต์หรือหน้าใหม่และแทรกเทมเพลตจากไลบรารีเทมเพลต Elementor
หากคุณต้องการทำซ้ำมากกว่าแค่หน้าเดียว คุณสามารถใช้คุณสมบัติชุดเว็บไซต์ของ Elementor เพื่อส่งออก/นำเข้าการออกแบบเว็บไซต์ที่สมบูรณ์
คุณลักษณะการนำเข้า/ส่งออกของ Elementor ช่วยให้คุณสามารถนำเข้าการสร้างสรรค์ของคุณเองและสร้างเว็บไซต์ใหม่ได้ในไม่กี่วินาที เพียงสร้างพิมพ์เขียวที่สามารถใช้ได้กับหลายโครงการ หรือนำการสร้างเว็บที่คุณชื่นชอบมาใช้ซ้ำ จากนั้น ส่งออกทั้งเว็บไซต์และนำไปใช้กับโครงการอื่นๆ ของคุณ
คุณสามารถใช้การสร้างของคุณเองหรือเลือกจากไลบรารีชุดเว็บไซต์ที่ออกแบบโดยนักออกแบบของเรา เพียงนำไปใช้กับเว็บไซต์ของคุณ เพิ่มเนื้อหา และทำให้เป็นของคุณเอง
วิธีทำซ้ำหน้า WordPress ด้วยตนเองด้วย Code
หากคุณชอบวิธีการทำเอง (DIY) คุณสามารถสร้างฟังก์ชันหน้าที่ซ้ำกันได้โดยใช้โค้ดที่กำหนดเอง วิธีนี้ไม่ได้เพิ่มประโยชน์ใดๆ ให้กับเส้นทางของปลั๊กอินนอกจากการขจัดความจำเป็นในการติดตั้งปลั๊กอินอื่นบนไซต์ของคุณ
อย่างไรก็ตาม หากการหลีกเลี่ยงปลั๊กอินอื่นมีความสำคัญต่อคุณ วิธีนี้ก็ใช้ได้ และจะใช้ได้กับเนื้อหาตัวแก้ไขทั่วไปและ Elementor
หากต้องการใช้โค้ดนี้ คุณต้องเพิ่มลงในไฟล์ functions.php ของธีมของคุณ หรือปลั๊กอินการจัดการโค้ด เช่น Code Snippets หากคุณเพิ่มลงในไฟล์ functions.php อย่าลืมใช้ธีมลูก
<?php /* * Function for post duplication. Dups appear as drafts. User is redirected to the edit screen */ function rd_duplicate_post_as_draft(){ global $wpdb; if (! ( isset( $_GET['post']) || isset( $_POST['post']) || ( isset($_REQUEST['action']) && 'rd_duplicate_post_as_draft' == $_REQUEST['action'] ) ) ) { wp_die('No post to duplicate has been supplied!'); } /* * Nonce verification */ if ( !isset( $_GET['duplicate_nonce'] ) || !wp_verify_nonce( $_GET['duplicate_nonce'], basename( __FILE__ ) ) ) return; /* * get the original post id */ $post_id = (isset($_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) ); /* * and all the original post data then */ $post = get_post( $post_id ); /* * if you don't want current user to be the new post author, * then change next couple of lines to this: $new_post_author = $post->post_author; */ $current_user = wp_get_current_user(); $new_post_author = $current_user->ID; /* * if post data exists, create the post duplicate */ if (isset( $post ) && $post != null) { /* * new post data array */ $args = array( 'comment_status' => $post->comment_status, 'ping_status' => $post->ping_status, 'post_author' => $new_post_author, 'post_content' => $post->post_content, 'post_excerpt' => $post->post_excerpt, 'post_name' => $post->post_name, 'post_parent' => $post->post_parent, 'post_password' => $post->post_password, 'post_status' => 'draft', 'post_title' => $post->post_title, 'post_type' => $post->post_type, 'to_ping' => $post->to_ping, 'menu_order' => $post->menu_order ); /* * insert the post by wp_insert_post() function */ $new_post_id = wp_insert_post( $args ); /* * get all current post terms ad set them to the new post draft */ $taxonomies = get_object_taxonomies($post->post_type); // returns array of taxonomy names for post type, ex array("category", "post_tag"); foreach ($taxonomies as $taxonomy) { $post_terms = wp_get_object_terms($post_id, $taxonomy, array('fields' => 'slugs')); wp_set_object_terms($new_post_id, $post_terms, $taxonomy, false); } /* * duplicate all post meta just in two SQL queries */ $post_meta_infos = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id"); if (count($post_meta_infos)!=0) { $sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) "; foreach ($post_meta_infos as $meta_info) { $meta_key = $meta_info->meta_key; if( $meta_key == '_wp_old_slug' ) continue; $meta_value = addslashes($meta_info->meta_value); $sql_query_sel[]= "SELECT $new_post_id, '$meta_key', '$meta_value'"; } $sql_query.= implode(" UNION ALL ", $sql_query_sel); $wpdb->query($sql_query); } /* * finally, redirect to the edit post screen for the new draft */ wp_redirect( admin_url( 'post.php?action=edit&post=' . $new_post_id ) ); exit; } else { wp_die('Post creation failed, could not find original post: ' . $post_id); } } add_action( 'admin_action_rd_duplicate_post_as_draft', 'rd_duplicate_post_as_draft' ); /* * Add the duplicate link to action list for post_row_actions */ function rd_duplicate_post_link( $actions, $post ) { if (current_user_can('edit_posts')) { $actions['duplicate'] = 'ID, basename(__FILE__), 'duplicate_nonce' ) . '" title="Duplicate this item" rel="permalink">Duplicate'; } return $actions; } add_filter( 'post_row_actions', 'rd_duplicate_post_link', 10, 2 );
<?php /* * Function for post duplication. Dups appear as drafts. User is redirected to the edit screen */ function rd_duplicate_post_as_draft(){ global $wpdb; if (! ( isset( $_GET['post']) || isset( $_POST['post']) || ( isset($_REQUEST['action']) && 'rd_duplicate_post_as_draft' == $_REQUEST['action'] ) ) ) { wp_die('No post to duplicate has been supplied!'); } /* * Nonce verification */ if ( !isset( $_GET['duplicate_nonce'] ) || !wp_verify_nonce( $_GET['duplicate_nonce'], basename( __FILE__ ) ) ) return; /* * get the original post id */ $post_id = (isset($_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) ); /* * and all the original post data then */ $post = get_post( $post_id ); /* * if you don't want current user to be the new post author, * then change next couple of lines to this: $new_post_author = $post->post_author; */ $current_user = wp_get_current_user(); $new_post_author = $current_user->ID; /* * if post data exists, create the post duplicate */ if (isset( $post ) && $post != null) { /* * new post data array */ $args = array( 'comment_status' => $post->comment_status, 'ping_status' => $post->ping_status, 'post_author' => $new_post_author, 'post_content' => $post->post_content, 'post_excerpt' => $post->post_excerpt, 'post_name' => $post->post_name, 'post_parent' => $post->post_parent, 'post_password' => $post->post_password, 'post_status' => 'draft', 'post_title' => $post->post_title, 'post_type' => $post->post_type, 'to_ping' => $post->to_ping, 'menu_order' => $post->menu_order ); /* * insert the post by wp_insert_post() function */ $new_post_id = wp_insert_post( $args ); /* * get all current post terms ad set them to the new post draft */ $taxonomies = get_object_taxonomies($post->post_type); // returns array of taxonomy names for post type, ex array("category", "post_tag"); foreach ($taxonomies as $taxonomy) { $post_terms = wp_get_object_terms($post_id, $taxonomy, array('fields' => 'slugs')); wp_set_object_terms($new_post_id, $post_terms, $taxonomy, false); } /* * duplicate all post meta just in two SQL queries */ $post_meta_infos = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id"); if (count($post_meta_infos)!=0) { $sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) "; foreach ($post_meta_infos as $meta_info) { $meta_key = $meta_info->meta_key; if( $meta_key == '_wp_old_slug' ) continue; $meta_value = addslashes($meta_info->meta_value); $sql_query_sel[]= "SELECT $new_post_id, '$meta_key', '$meta_value'"; } $sql_query.= implode(" UNION ALL ", $sql_query_sel); $wpdb->query($sql_query); } /* * finally, redirect to the edit post screen for the new draft */ wp_redirect( admin_url( 'post.php?action=edit&post=' . $new_post_id ) ); exit; } else { wp_die('Post creation failed, could not find original post: ' . $post_id); } } add_action( 'admin_action_rd_duplicate_post_as_draft', 'rd_duplicate_post_as_draft' ); /* * Add the duplicate link to action list for post_row_actions */ function rd_duplicate_post_link( $actions, $post ) { if (current_user_can('edit_posts')) { $actions['duplicate'] = 'ID, basename(__FILE__), 'duplicate_nonce' ) . '" title="Duplicate this item" rel="permalink">Duplicate'; } return $actions; } add_filter( 'post_row_actions', 'rd_duplicate_post_link', 10, 2 );
<?php /* * Function for post duplication. Dups appear as drafts. User is redirected to the edit screen */ function rd_duplicate_post_as_draft(){ global $wpdb; if (! ( isset( $_GET['post']) || isset( $_POST['post']) || ( isset($_REQUEST['action']) && 'rd_duplicate_post_as_draft' == $_REQUEST['action'] ) ) ) { wp_die('No post to duplicate has been supplied!'); } /* * Nonce verification */ if ( !isset( $_GET['duplicate_nonce'] ) || !wp_verify_nonce( $_GET['duplicate_nonce'], basename( __FILE__ ) ) ) return; /* * get the original post id */ $post_id = (isset($_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) ); /* * and all the original post data then */ $post = get_post( $post_id ); /* * if you don't want current user to be the new post author, * then change next couple of lines to this: $new_post_author = $post->post_author; */ $current_user = wp_get_current_user(); $new_post_author = $current_user->ID; /* * if post data exists, create the post duplicate */ if (isset( $post ) && $post != null) { /* * new post data array */ $args = array( 'comment_status' => $post->comment_status, 'ping_status' => $post->ping_status, 'post_author' => $new_post_author, 'post_content' => $post->post_content, 'post_excerpt' => $post->post_excerpt, 'post_name' => $post->post_name, 'post_parent' => $post->post_parent, 'post_password' => $post->post_password, 'post_status' => 'draft', 'post_title' => $post->post_title, 'post_type' => $post->post_type, 'to_ping' => $post->to_ping, 'menu_order' => $post->menu_order ); /* * insert the post by wp_insert_post() function */ $new_post_id = wp_insert_post( $args ); /* * get all current post terms ad set them to the new post draft */ $taxonomies = get_object_taxonomies($post->post_type); // returns array of taxonomy names for post type, ex array("category", "post_tag"); foreach ($taxonomies as $taxonomy) { $post_terms = wp_get_object_terms($post_id, $taxonomy, array('fields' => 'slugs')); wp_set_object_terms($new_post_id, $post_terms, $taxonomy, false); } /* * duplicate all post meta just in two SQL queries */ $post_meta_infos = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id"); if (count($post_meta_infos)!=0) { $sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) "; foreach ($post_meta_infos as $meta_info) { $meta_key = $meta_info->meta_key; if( $meta_key == '_wp_old_slug' ) continue; $meta_value = addslashes($meta_info->meta_value); $sql_query_sel[]= "SELECT $new_post_id, '$meta_key', '$meta_value'"; } $sql_query.= implode(" UNION ALL ", $sql_query_sel); $wpdb->query($sql_query); } /* * finally, redirect to the edit post screen for the new draft */ wp_redirect( admin_url( 'post.php?action=edit&post=' . $new_post_id ) ); exit; } else { wp_die('Post creation failed, could not find original post: ' . $post_id); } } add_action( 'admin_action_rd_duplicate_post_as_draft', 'rd_duplicate_post_as_draft' ); /* * Add the duplicate link to action list for post_row_actions */ function rd_duplicate_post_link( $actions, $post ) { if (current_user_can('edit_posts')) { $actions['duplicate'] = 'ID, basename(__FILE__), 'duplicate_nonce' ) . '" title="Duplicate this item" rel="permalink">Duplicate'; } return $actions; } add_filter( 'post_row_actions', 'rd_duplicate_post_link', 10, 2 );
โดยค่าเริ่มต้น ข้อมูลโค้ดจะเปิดใช้งานการทำซ้ำสำหรับทั้งโพสต์และเพจ ถ้าคุณเพียงต้องการที่จะเปิดใช้งานสำหรับหนึ่งหรืออื่น ๆ คุณสามารถลบ page_row_actions หรือ post_row_actions กรองที่ด้านล่างของข้อมูลโค้ดที่
ปรับปรุงกระบวนการสร้างเว็บของคุณโดยการทำซ้ำเพจและโพสต์
ความสามารถในการทำซ้ำหน้า WordPress โพสต์หรือโพสต์ประเภทอื่น ๆ นั้นมีประโยชน์มากเมื่อคุณกำลังทำงานบนไซต์ WordPress
ในโพสต์นี้ เราได้แบ่งปันสามวิธีที่คุณสามารถใช้เพื่อทำซ้ำเนื้อหา
สำหรับคนส่วนใหญ่ วิธีที่ง่ายที่สุดในการโคลนโพสต์หรือเพจอย่างสมบูรณ์คือการใช้ปลั๊กอิน Yoast Duplicate Post ฟรี มันเริ่มทำงานทันทีและทำงานร่วมกับตัวแก้ไขบล็อก (Gutenberg), Elementor และตัวแก้ไข TinyMCE แบบคลาสสิก นอกจากนี้ยังใช้ได้กับโพสต์ทุกประเภท ตั้งแต่หน้าไปจนถึงโพสต์ และประเภทโพสต์ที่กำหนดเองที่คุณอาจใช้อยู่
หากคุณมีร้านค้า WooCommerce คุณสามารถใช้คุณลักษณะในตัวของ WooCommerce เพื่อทำซ้ำผลิตภัณฑ์ได้ หรือคุณสามารถเพิ่มโค้ดที่กำหนดเองลงในไซต์ของคุณได้ หากคุณไม่ต้องการติดตั้งปลั๊กอินอื่น
สุดท้ายนี้ หากคุณต้องการเพียงแค่ทำซ้ำเนื้อหา/การออกแบบของโพสต์ คุณสามารถใช้ระบบเทมเพลตของ Elementor หรือใช้ตัวเลือกของตัวแก้ไขบล็อกเพื่อคัดลอกเนื้อหาทั้งหมด
ก่อนที่เราจะไป เตือนความจำสั้นๆ อย่างหนึ่ง คุณคงไม่อยากเผยแพร่เนื้อหาที่ซ้ำกันในสถานการณ์ส่วนใหญ่ เนื่องจากอาจส่งผลเสียต่อ SEO ของคุณ ดังนั้น หากคุณกำลังทำซ้ำหน้าโดยไม่เปลี่ยนเนื้อหา (อาจเพียงเพื่อเปลี่ยน URL) คุณจะต้องพิจารณาเปลี่ยนเส้นทางหน้าเดิมเมื่อดำเนินการเสร็จ
คุณยังมีคำถามเกี่ยวกับวิธีการทำซ้ำหน้าหรือโพสต์ WordPress หรือไม่? แจ้งให้เราทราบในส่วนความคิดเห็น