ป้ายกำกับ: รายชื่อ

WordPress: clone / ล้างบทความWordPress: clone / ล้างบทความ

ถ้ามี wordpress แล้วต้องการ clone โดยเก็บ config ต่าง ๆ ไว้เหมือนเดิม แต่เปลี่ยนแค่เนื้อหาข้างใน วิธีที่เร็วที่สุดคือ


WordPress Site

  1. คัดลอก database mysql / mariadb ออกมาทั้งก้อน เปลี่ยนชื่อใหม่
    • set user, permission
  2. คัดลอก folder WordPress ออกมาเป็นเป็นอีก folder เปลี่ยนชื่อใหม่
    • แก้ wp-config.php ให้ถูกต้อง
      • database, username, password, table prefix
      • แก้ Authentication unique keys and salts ให้ครบ
  3. คัดลอง nginx site / apache site มาใหม่
    • อย่าลืมแก้ path ให้ถูก
    • ทำ ssl ใหม่

🛑 ตารางที่ต้อง “เก็บไว้” (หัวใจหลักของระบบ)

ตารางกลุ่มนี้ทำหน้าที่เก็บข้อมูล Config และ User

ตารางความสำคัญผลกระทบถ้าหาย
wp_optionsสูงสุด!เก็บค่า siteurl, home, blogname, รวมถึงการตั้งค่าของปลั๊กอินทั้งหมด ถ้าลบ = เว็บพัง ต้องลงใหม่หมด
wp_usersสูงสุด!เก็บรายชื่อ User และรหัสผ่าน ถ้าลบ = พี่ล็อกอินเข้าเว็บไม่ได้อีกเลย
wp_usermetaสูงเก็บสิทธิ์ (Capabilities) ของ Admin (ถ้าลบ = พี่จะกลายเป็นแค่ผู้เยี่ยมชมและเข้าหน้า admin ไม่ได้)
wp_termsสูงเก็บชื่อหมวดหมู่ (Categories/Tags) ถ้าลบ = ระบบหมวดหมู่ในฐานข้อมูลจะว่างเปล่า
wp_term_taxonomyสูงผูกโยงว่า Term ไหนคือ Category หรือ Tag ถ้าลบ = หมวดหมู่พัง

💡 ถ้าเป้าหมายคือ “ล้างแค่เนื้อหา แต่เก็บ Config ไว้”

ถ้าอยากล้างโพสต์, หน้าเพจ, และแคชขยะ โดยที่ Config, เมนูหลัก, รายชื่อ User และการตั้งค่าปลั๊กอินยังอยู่ครบ ให้ใช้สคริปต์นี้แทนครับ (นี่คือสคริปต์ที่ปลอดภัยสำหรับ Developer)

-- 1. ลบโพสต์และหน้าทั้งหมด (แต่โครงสร้างตารางยังอยู่)
DELETE FROM `wp_posts`;
DELETE FROM `wp_postmeta`;

-- 2. ลบความสัมพันธ์ของหมวดหมู่และแท็กที่ผูกกับโพสต์
DELETE FROM `wp_term_relationships`;

-- 3. ล้างแคชและ Log ต่างๆ (ถ้ามี)
-- ล้างตารางแคชของปลั๊กอิน (ถ้าพี่ใช้ปลั๊กอิน AMP, สถิติ, หรือแคชอื่นๆ)
-- ตรวจสอบชื่อตารางที่ขึ้นต้นด้วย wp_... แล้ว TRUNCATE เฉพาะตาราง log/cache
TRUNCATE TABLE `wp_commentmeta`;
TRUNCATE TABLE `wp_comments`;

-- 4. จัดการเรื่อง ID ให้กลับมาเริ่มที่ 1 เพื่อความสะอาด
ALTER TABLE `wp_posts` AUTO_INCREMENT = 1;
ALTER TABLE `wp_comments` AUTO_INCREMENT = 1;

replace

replace ค่าต่าง ๆ อย่าง url, username, password


⚠️ คำแนะนำ

  • แนะนำให้ “Export เฉพาะตาราง” ออกมาเป็นไฟล์ .sql แยกไว้ก่อน แล้วค่อยสั่งกวาดล้างทั้ง Database แล้วค่อย Import ตาราง config กลับเข้าไปครับ วิธีนี้จะชัวร์ที่สุดครับ
  • ถ้าต้องการรีเซ็ตแค่เนื้อหา:
    การใช้คำสั่ง DELETE FROM (แบบไม่มี WHERE) จะปลอดภัยกว่า TRUNCATE ในแง่ที่ว่าโครงสร้างดัชนีบางอย่างของ InnoDB จะยังถูกรักษาไว้ (ถ้ามี Foreign Key Constraints) แต่ถ้ามั่นใจว่าไม่มี Constraints ผูกกันมั่วซั้ว TRUNCATE ก็ทำได้ครับ
  • สิ่งที่ต้องเช็ค: หลังจากสั่งลบพวกนี้แล้ว ให้ไปที่ “Settings > Permalinks” ในหน้า Admin แล้วกดปุ่ม “Save Changes” 1 ครั้งครับ เพื่อให้ WordPress มันสร้าง Rewrite Rules ขึ้นมาใหม่ ให้สอดคล้องกับโครงสร้างที่หายไป (ป้องกันหน้า 404)

อ่านเพิ่มเติม