วิธีทำซ้ำหน้าหรือโพสต์ใน 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

ตอนนี้ คุณมีหลายวิธีในการทำซ้ำเนื้อหา

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

  • โคลน – ทำซ้ำเนื้อหาและเก็บแท็บเบราว์เซอร์ของคุณไว้ในรายการโพสต์/หน้า
  • ร่างใหม่ – ทำซ้ำเนื้อหาและเปิดตัวแก้ไขสำหรับเนื้อหาที่ซ้ำกันเพื่อให้คุณสามารถเริ่มทำงานได้ทันที
  • เขียนซ้ำและเผยแพร่ซ้ำ – นี่เป็นคุณลักษณะที่มีประโยชน์สำหรับการอัปเดตเนื้อหาเก่า ดังที่เราได้กล่าวไว้ข้างต้น ความแตกต่างที่สำคัญคือมันจะช่วยให้คุณรวมเนื้อหากลับเข้าไปในโพสต์เดิมเมื่อคุณทำเสร็จแล้ว
ซ้ำหน้า-1-ตัวเลือกในหน้ารายการ

วิธีที่ง่ายที่สุดคือเพียงคลิก Clone จากนั้น คุณจะเห็นรายการฉบับร่างใหม่สำหรับเนื้อหาที่ซ้ำกันปรากฏในรายการ ปลั๊กอินจะทำเครื่องหมายด้วย "Customization Draft" เพื่อแจ้งให้คุณทราบว่าเป็นเวอร์ชันที่ซ้ำกัน:

ประการที่สอง คุณสามารถทำซ้ำเนื้อหาจากภายในตัวแก้ไข WordPress ได้ คุณจะพบตัวเลือกเหล่านี้ในส่วน สถานะและการมองเห็น ของแถบด้านข้างของ โพสต์/หน้า :

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

  1. ใช้ช่องทำเครื่องหมายเพื่อเลือกโพสต์หรือหน้าทั้งหมดที่คุณต้องการทำซ้ำ
  2. เลือกวิธีการทำซ้ำจากเมนูแบบเลื่อนลง – Clone หรือ Rewrite & Republish
  3. คลิก สมัคร

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

  • เลือกเนื้อหาที่จะทำซ้ำ
  • เพิ่มคำนำหน้าหรือคำต่อท้ายแบบกำหนดเองให้กับชื่อเรื่องของเนื้อหาที่ซ้ำกัน
  • เลือกวิธีการสั่งซื้อเนื้อหาที่ซ้ำกันในเมนู
  • เลือกประเภทโพสต์เพื่อให้มีสิทธิ์ทำซ้ำ
  • เลือกบทบาทของผู้ใช้ที่มีความสามารถในการทำซ้ำเนื้อหา
  • ปรับแต่งตำแหน่งที่จะแสดงลิงก์/ปุ่มของโพสต์ที่ซ้ำกัน
ซ้ำหน้า-5-yoast-ซ้ำโพสต์การตั้งค่าพื้นที่

โพสต์ซ้ำ

Duplicate Post ทำหน้าที่พื้นฐานเหมือนกับ Yoast Duplicate Post ซึ่งทำให้ง่ายต่อการทำซ้ำโพสต์หรือเพจอย่างรวดเร็ว

ข้อดีบางประการของปลั๊กอินนี้เหนือ Yoast Duplicate Post คือ:

  1. ให้คุณทำซ้ำโพสต์/หน้าได้หลายครั้งด้วยคลิกเดียว ตัวอย่างเช่น คุณสามารถบอกให้สร้างสำเนาสี่ชุด
  2. ช่วยให้คุณควบคุมเนื้อหาที่คุณทำซ้ำระหว่างโพสต์ได้มากขึ้นเล็กน้อย
  3. มีคุณลักษณะในการสแกนไซต์ของคุณเพื่อหาเนื้อหาที่ซ้ำกัน ซึ่งเป็นประโยชน์สำหรับการค้นหารายการที่ซ้ำกันอย่างรวดเร็ว
  4. ให้คุณคัดลอกเนื้อหาระหว่างไซต์เครือข่ายหลายไซต์ของ WordPress รวมถึงไซต์ในโดเมนย่อย (แม้ว่าคุณลักษณะนี้ต้องใช้ปลั๊กอินพรีเมียม 19.98 ดอลลาร์)
  5. ให้ตัวเลือกในการแปลงโพสต์เป็นเพจและในทางกลับกัน (ต้องใช้เวอร์ชันพรีเมียมด้วย)

หากคุณไม่ต้องการคุณสมบัติเหล่านั้น เราขอแนะนำให้ใช้ Yoast Duplicate Post เนื่องจากเป็นที่นิยมมากกว่าและทำงานให้เสร็จลุล่วง แต่ถ้าคุณต้องการคุณสมบัติเหล่านั้น นี่เป็นอีกตัวเลือกที่ดีที่ควรพิจารณา

ในการเริ่มต้น ให้ติดตั้งและเปิดใช้งานปลั๊กอิน Duplicate Post ฟรีจาก WordPress.org ทันทีที่คุณเปิดใช้งาน มันจะเริ่มทำงาน

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

ซ้ำหน้า-6-ซ้ำโพสต์ปลั๊กอิน

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

ในการกำหนดการตั้งค่าของปลั๊กอิน คุณสามารถไปที่แท็บ คัดลอกและลบโพสต์ใหม่ ในแดชบอร์ด WordPress ของคุณ นี่คือที่ที่คุณสามารถกำหนดการตั้งค่าทั้งหมดรวมถึง:

  • เนื้อหาใดที่จะทำซ้ำ
  • ใครสามารถทำซ้ำเนื้อหา
  • โพสต์ที่กำหนดเองประเภทใดที่จะเปิดใช้งานการทำซ้ำได้
  • เป็นต้น

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

หากคุณเลื่อนไปที่ด้านล่างของพื้นที่การตั้งค่า คุณจะพบคุณลักษณะในการสแกนหาเนื้อหาที่ซ้ำกันบนไซต์ของคุณ:

อีกครั้ง หากคุณต้องการวิธีง่ายๆ ในการทำซ้ำเนื้อหา เราขอแนะนำให้ใช้ปลั๊กอิน Yoast Duplicate Post แต่ถ้าฟีเจอร์เหล่านี้ดึงดูดสายตาคุณ Duplicate Post ก็ใช้งานได้ดีเช่นกัน

WooCommerce

หากคุณกำลังใช้ WooCommerce เพื่อสร้างร้านค้าอีคอมเมิร์ซ WooCommerce มีฟีเจอร์ในตัวของมันเองเพื่อทำซ้ำผลิตภัณฑ์ – ไม่จำเป็นต้องติดตั้งปลั๊กอินแยกต่างหาก

หากต้องการทำซ้ำผลิตภัณฑ์ ให้ไปที่พื้นที่ ผลิตภัณฑ์ ในแดชบอร์ดของคุณ จากนั้น วางเมาส์เหนือผลิตภัณฑ์ที่คุณต้องการทำซ้ำ แล้วคลิก ทำสำเนา :

คุณยังสามารถทำสำเนาผลิตภัณฑ์จากภายในตัวแก้ไขผลิตภัณฑ์ได้ด้วยการคลิกตัวเลือก คัดลอกไปยังฉบับร่างใหม่ ภายใต้การตั้งค่า เผยแพร่ :

หมายเหตุ – ตัวเลือกเหล่านี้จะปรากฏบนผลิตภัณฑ์เท่านั้น หากคุณต้องการทำซ้ำบทความและหน้า คุณจะต้องติดตั้งปลั๊กอินตัวใดตัวหนึ่งจากด้านบน

วิธีทำซ้ำหน้า WordPress โดยใช้ตัวแก้ไข

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

ในส่วนนี้ เราจะแสดงวิธีทำซ้ำการออกแบบที่คุณสร้างขึ้นอย่างรวดเร็วด้วยตัวแก้ไขบล็อกดั้งเดิม (Gutenberg) หรือ Elementor

สิ่งสำคัญที่ควรทราบคือวิธีการทั้งสองนี้จะทำซ้ำเฉพาะเนื้อหาและการออกแบบ คุณจะต้องสร้างข้อมูลเมตาที่สำคัญขึ้นมาใหม่ด้วยตนเอง เช่น ชื่อ หมวดหมู่ แท็ก ฟิลด์ที่กำหนดเอง ฯลฯ

ตัวแก้ไขบล็อก (Gutenberg)

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

คลิกไอคอน สามจุด ที่มุมบนขวาเพื่อขยายเมนู จากนั้นเลือกตัวเลือกเพื่อ คัดลอกเนื้อหาทั้งหมด :

duplicate-page-11-duplicate-content-gutenberg

ตอนนี้สร้างโพสต์หรือหน้าใหม่ จากนั้นคลิกในตัวแก้ไขและวางเนื้อหา คุณสามารถ:

  • ใช้แป้นพิมพ์ลัด เช่น Ctrl + V หรือ Cmd + V
  • คลิกขวาและเลือกวาง

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

Elementor

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

เรามีคำแนะนำเกี่ยวกับวิธีการทำซ้ำหน้า Elementor แต่นี่เป็นแนวคิดพื้นฐาน

ขั้นแรก คุณสามารถบันทึกการออกแบบของคุณเป็นเทมเพลตจากอินเทอร์เฟซตัวแก้ไข Elementor:

ซ้ำ-หน้า-12-องค์ประกอบ-แม่แบบ

จากนั้น คุณสามารถสร้างโพสต์หรือหน้าใหม่และแทรกเทมเพลตจากไลบรารีเทมเพลต 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 ); <code readonly="true">&lt;?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[&#39;post&#39;]) || isset( $_POST[&#39;post&#39;]) || ( isset($_REQUEST[&#39;action&#39;]) &amp;&amp; &#39;rd_duplicate_post_as_draft&#39; == $_REQUEST[&#39;action&#39;] ) ) ) { wp_die(&#39;No post to duplicate has been supplied!&#39;); } /* * Nonce verification */ if ( !isset( $_GET[&#39;duplicate_nonce&#39;] ) || !wp_verify_nonce( $_GET[&#39;duplicate_nonce&#39;], basename( __FILE__ ) ) ) return; /* * get the original post id */ $post_id = (isset($_GET[&#39;post&#39;]) ? absint( $_GET[&#39;post&#39;] ) : absint( $_POST[&#39;post&#39;] ) ); /* * and all the original post data then */ $post = get_post( $post_id ); /* * if you don&#39;t want current user to be the new post author, * then change next couple of lines to this: $new_post_author = $post-&gt;post_author; */ $current_user = wp_get_current_user(); $new_post_author = $current_user-&gt;ID; /* * if post data exists, create the post duplicate */ if (isset( $post ) &amp;&amp; $post != null) { /* * new post data array */ $args = array( &#39;comment_status&#39; =&gt; $post-&gt;comment_status, &#39;ping_status&#39; =&gt; $post-&gt;ping_status, &#39;post_author&#39; =&gt; $new_post_author, &#39;post_content&#39; =&gt; $post-&gt;post_content, &#39;post_excerpt&#39; =&gt; $post-&gt;post_excerpt, &#39;post_name&#39; =&gt; $post-&gt;post_name, &#39;post_parent&#39; =&gt; $post-&gt;post_parent, &#39;post_password&#39; =&gt; $post-&gt;post_password, &#39;post_status&#39; =&gt; &#39;draft&#39;, &#39;post_title&#39; =&gt; $post-&gt;post_title, &#39;post_type&#39; =&gt; $post-&gt;post_type, &#39;to_ping&#39; =&gt; $post-&gt;to_ping, &#39;menu_order&#39; =&gt; $post-&gt;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-&gt;post_type); // returns array of taxonomy names for post type, ex array(&quot;category&quot;, &quot;post_tag&quot;); foreach ($taxonomies as $taxonomy) { $post_terms = wp_get_object_terms($post_id, $taxonomy, array(&#39;fields&#39; =&gt; &#39;slugs&#39;)); wp_set_object_terms($new_post_id, $post_terms, $taxonomy, false); } /* * duplicate all post meta just in two SQL queries */ $post_meta_infos = $wpdb-&gt;get_results(&quot;SELECT meta_key, meta_value FROM $wpdb-&gt;postmeta WHERE post_id=$post_id&quot;); if (count($post_meta_infos)!=0) { $sql_query = &quot;INSERT INTO $wpdb-&gt;postmeta (post_id, meta_key, meta_value) &quot;; foreach ($post_meta_infos as $meta_info) { $meta_key = $meta_info-&gt;meta_key; if( $meta_key == &#39;_wp_old_slug&#39; ) continue; $meta_value = addslashes($meta_info-&gt;meta_value); $sql_query_sel[]= &quot;SELECT $new_post_id, &#39;$meta_key&#39;, &#39;$meta_value&#39;&quot;; } $sql_query.= implode(&quot; UNION ALL &quot;, $sql_query_sel); $wpdb-&gt;query($sql_query); } /* * finally, redirect to the edit post screen for the new draft */ wp_redirect( admin_url( &#39;post.php?action=edit&amp;post=&#39; . $new_post_id ) ); exit; } else { wp_die(&#39;Post creation failed, could not find original post: &#39; . $post_id); } } add_action( &#39;admin_action_rd_duplicate_post_as_draft&#39;, &#39;rd_duplicate_post_as_draft&#39; ); /* * Add the duplicate link to action list for post_row_actions */ function rd_duplicate_post_link( $actions, $post ) { if (current_user_can(&#39;edit_posts&#39;)) { $actions[&#39;duplicate&#39;] = &#39;ID, basename(__FILE__), &#39;duplicate_nonce&#39; ) . &#39;&quot; title=&quot;Duplicate this item&quot; rel=&quot;permalink&quot;&gt;Duplicate&#39;; } return $actions; } add_filter( &#39;post_row_actions&#39;, &#39;rd_duplicate_post_link&#39;, 10, 2 );</code> <?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 หรือไม่? แจ้งให้เราทราบในส่วนความคิดเห็น