วิธีการยกเลิกการเลือกหมวดหมู่สำหรับโพสต์โดยไม่ต้องใช้ปลั๊กอิน

เผยแพร่แล้ว: 2020-10-05

“หมวดหมู่” เป็นอนุกรมวิธานเริ่มต้นใน WordPress ตัวดำเนินการสามารถใช้หมวดหมู่เพื่อจัดเรียงและจัดกลุ่มโพสต์ในบล็อกออกเป็นส่วนต่างๆ หมวดหมู่ยังช่วยให้ผู้เยี่ยมชมไปยังไซต์ต่างๆ ได้เร็วขึ้น ตลอดจนรู้ว่าเว็บไซต์ของคุณเกี่ยวกับหัวข้อใดบ้าง ผู้ดำเนินการเว็บไซต์สามารถใช้การดำเนินการพื้นฐานกับหมวดหมู่และโพสต์ด้วยแผงผู้ดูแลระบบ WordPress ได้ เช่นเดียวกับการใช้ปลั๊กอิน WordPress เพื่อจัดการโพสต์ในลักษณะต่างๆ

สารบัญ ซ่อน
  1. 1. ทำความเข้าใจว่า WordPress จัดการกับคำขอทางเว็บจากลูกค้าอย่างไร?
  2. 2. ตารางสำคัญสำหรับการจัดการแบบกลุ่มของโพสต์ WordPress
  3. 3. ย้ายโพสต์ทั้งหมดจากหมวดหมู่ไปยังหมวดหมู่อื่น – ใช้คำสั่ง SQL
    1. 3.1. รับรายการ ID ของโพสต์ทั้งหมดที่อยู่ในหมวดหมู่เฉพาะ
    2. 3.2. รับ ID ของหมวดหมู่ใหม่
    3. 3.3. อัปเดตโพสต์ด้วยรายการ ID ที่ระบุ
  4. 4. คำพูดสุดท้าย

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

ทำความเข้าใจว่า WordPress จัดการกับคำขอทางเว็บจากลูกค้าอย่างไร?

การทำความเข้าใจว่าเว็บเซิร์ฟเวอร์จัดการกับคำขอจากลูกค้าอย่างไรจึงจำเป็นต่อการจัดการไซต์ WordPress การดำเนินการโดยละเอียดรวมถึงการยกเลิกการเลือกโพสต์จำนวนมากในหมวดหมู่

เว็บเซิร์ฟเวอร์ทั่วไปคือ LAMP stack (Linux – Apache – MySQL/MariaDB – PHP) แนวคิดที่เทียบเท่ากันอื่นๆ สามารถพบได้ในแพลตฟอร์มเว็บเซิร์ฟเวอร์อื่นๆ

หากต้องการยกเลิกการเลือกโพสต์จำนวนมาก คุณควรเรียนรู้เกี่ยวกับวิธีที่ WordPress จัดการกับคำขอ

LAMP สแต็คการสื่อสารระหว่างเซิร์ฟเวอร์กับไคลเอนต์

1. ลูกค้าส่งคำขอ HTTP เพื่อขอข้อมูลเว็บจากเว็บเซิร์ฟเวอร์

2. เว็บเซิร์ฟเวอร์ได้รับคำขอ HTTP ที่ถูกต้องจากลูกค้า (หลังจากผ่านกฎไฟร์วอลล์):

  • วิเคราะห์โครงสร้างของคำขอ HTTP ระบุหน้า HTML ที่ลูกค้าต้องการ
  • การแยกวิเคราะห์คำขอไปยังเลเยอร์สคริปต์ (PHP)

3. เลเยอร์สคริปต์ PHP:

  • สอบถามฐานข้อมูล รับข้อมูลที่จำเป็นทั้งหมด
  • รวมกับซอร์สโค้ดในธีมเพื่อแสดงหน้าเว็บแบบไดนามิก
  • กลับไปที่เว็บเซิร์ฟเวอร์

4. เว็บเซิร์ฟเวอร์:

  • สร้างข้อความตอบกลับ HTTP
  • ส่งข้อความตอบกลับ HTTP ไปยังไคลเอนต์

5. ไคลเอนต์ได้รับข้อความตอบกลับ HTTP จากเว็บเซิร์ฟเวอร์ จากนั้นแสดงข้อมูลเว็บในเว็บเบราว์เซอร์

ตารางที่สำคัญสำหรับการจัดการโพสต์จำนวนมากของ WordPress

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

ชื่อโต๊ะ คำอธิบาย
wp_postmeta จัดเก็บข้อมูลที่เกี่ยวข้องกับเนื้อหาเพิ่มเติมของไซต์ WordPress
wp_post จัดเก็บข้อมูลที่เกี่ยวข้องกับเนื้อหาที่สำคัญทั้งหมดของไซต์ WordPress
wp_term_relationships จัดเก็บข้อมูลการเชื่อมต่อทั้งหมดที่เชื่อมโยงไปยังหมวดหมู่ แท็ก ลิงก์ ข้อมูลจากตารางนี้ทำหน้าที่เป็นแผนที่ระหว่างเงื่อนไขของวัตถุและข้อกำหนด
wp_term_taxonomy เก็บข้อมูลเพิ่มเติมสำหรับตาราง wp_terms
wp_term จัดเก็บหมวดหมู่ แท็กสำหรับโพสต์ เพจ และลิงก์

ย้ายโพสต์ทั้งหมดจากหมวดหมู่ไปยังหมวดหมู่อื่น – ใช้คำสั่ง SQL

ในการจัดการฐานข้อมูล WordPress โดยตรง ตัวดำเนินการจำเป็นต้องตัดสินใจว่า DBMS (ระบบจัดการฐานข้อมูล) ใดที่จะใช้ เนื่องจากสภาพแวดล้อมของแล็บใช้ LAMP stack เป็นแพลตฟอร์มเว็บ ผู้ปฏิบัติงานสามารถทำงานกับฐานข้อมูล WordPress ได้โดยใช้ phpMyAdmin, ปลั๊กอิน WordPress, แม้แต่ไคลเอนต์ MySQL (คำสั่งเทอร์มินัล) ผ่านเซสชัน SSH … ในสถานการณ์นี้ DBMS คือ MySQL WorkBench เพื่อจุดประสงค์ในการแสดงภาพประกอบที่ดีขึ้น

ก่อนที่จะดำเนินการเปลี่ยนแปลงใดๆ ในฐานข้อมูล WordPress ขอแนะนำให้สำรองข้อมูลไซต์ WordPress อย่างครบถ้วน การสำรองข้อมูลเต็มรูปแบบนี้รวมถึงซอร์สโค้ด WordPress (ธีม, ไฟล์ PHP …) และโครงสร้างฐานข้อมูล เพื่อวัตถุประสงค์ในอุดมคติ ผู้ให้บริการสามารถสร้างการสำรองข้อมูลเต็มรูปแบบของโฮสต์ทั้งหมดที่รันไซต์ WordPress

ต่อไปนี้คือสคริปต์ SQL ที่สมบูรณ์ในการย้ายโพสต์ทั้งหมดจากหมวดหมู่ "ไม่มีหมวดหมู่" ไปยังหมวดหมู่ "แรงบันดาลใจ"

 SET @listID = (
     	เลือก GROUP_CONCAT(ID) จาก wp_posts
             	โดยที่ post_type="โพสต์"
             	และ post_status = "เผยแพร่"
             	และ ID ใน (
                      	เลือก object_id จาก wp_term_relationships
                               	โดยที่term_taxonomy_id IN (
                                        	เลือก term_taxonomy_id จาก wp_term_taxonomy
                                                	โดยที่อนุกรมวิธาน = "หมวดหมู่"
                                                	และ term_id ใน (
                                                         	เลือก t.term_id จาก wp_terms t
                                                                  	WHERE t.name="ไม่มีหมวดหมู่"
   	 )
	)
)
);

SET @newCategoryID = (
     	เลือก t.term_id จาก wp_terms t ที่ไหน t.name='แรงบันดาลใจ'
);
 
เลือก @newCategoryID;
 
ตั้งค่า @sqlCmd = CONCAT(
     	'อัปเดต wp_term_relationships tr',
	'SET tr.term_taxonomy_id = ', @newCategoryID , ' ',
	'WHERE tr.object_id IN (', @listID , ');'
);

เลือก @sqlCmd;

เตรียม stmt จาก @sqlCmd;
ตั้งค่า SQL_SAFE_UPDATES = 0;
ดำเนินการ stmt;
ตั้งค่า SQL_SAFE_UPDATES = 1;
จัดสรร เตรียม stmt;

สคริปต์รายละเอียดจะอธิบายดังนี้

รับรายการ ID ของโพสต์ทั้งหมดที่อยู่ในหมวดหมู่เฉพาะ

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

จากแผงผู้ดูแลระบบ WordPress 3 โพสต์เหล่านี้ถูกจัดเรียงในหมวดหมู่ "ไม่มีหมวดหมู่"

รับรายการรหัส 3 โพสต์เพื่อยกเลิกการเลือกหมวดหมู่สำหรับพวกเขาเป็นกลุ่ม

คำสั่ง SQL ด้านล่างจะดึง ID โพสต์ทั้งหมดของหมวดหมู่ที่ชื่อว่า "Uncategorized"

 SET @listID = (
     	เลือก GROUP_CONCAT(ID) จาก wp_posts
             	โดยที่ post_type="โพสต์"
             	และ post_status = "เผยแพร่"
             	และ ID ใน (
                      	เลือก object_id จาก wp_term_relationships
                               	โดยที่term_taxonomy_id IN (
                                        	เลือก term_taxonomy_id จาก wp_term_taxonomy
                                                	โดยที่อนุกรมวิธาน = "หมวดหมู่"
                                                	และ term_id ใน (
                                                         	เลือก t.term_id จาก wp_terms t
                                                                  	WHERE t.name="ไม่มีหมวดหมู่"
        )
    )
)
);

ตรวจสอบค่าของ @listID :

รับรายการรหัสโพสต์เพื่อยกเลิกการเลือกหมวดหมู่สำหรับโพสต์เป็นกลุ่ม

รับ ID ของหมวดหมู่ใหม่

 SET @newCategoryID = (
    	เลือก t.term_id จาก wp_terms t ที่ไหน t.name='แรงบันดาลใจ'
);

ตรวจสอบค่าของ @newCategoryID :

รับ ID หมวดหมู่ใหม่ จากนั้นย้ายโพสต์ไปหลังจากยกเลิกการเลือกหมวดหมู่ "ไม่มีหมวดหมู่" เป็นกลุ่ม

อัปเดตโพสต์ด้วยรายการ ID ที่ระบุ

ขั้นแรก สร้างคำสั่ง SQL และเก็บไว้ในตัวแปร @sqlCmd

 /* คำสั่งที่คาดไว้ในตัวแปร @sqlCmd:
อัพเดท wp_term_relationships tr
SET tr.term_taxonomy_id = 5
WHERE tr.object_id IN (131,132,133);

*/
ตั้งค่า @sqlCmd = CONCAT(
    	'อัปเดต wp_term_relationships tr',
	'SET tr.term_taxonomy_id = ', @newCategoryID , ' ',
	'WHERE tr.object_id IN (', @listID , ');'
);

ประการที่สอง ตรวจสอบ:

ตรวจสอบคำสั่ง SQL เพื่ออัพเดตโพสต์ด้วยรายการ ID ที่กำหนด

สุดท้าย ออกคำสั่ง SQL ที่เก็บไว้ในตัวแปร @sqlCmd ด้วยคำสั่งด้านล่าง:

 เตรียม stmt จาก @sqlCmd;
ตั้งค่า SQL_SAFE_UPDATES = 0;
ดำเนินการ stmt;
ตั้งค่า SQL_SAFE_UPDATES = 1;
จัดสรร เตรียม stmt;

นี่คือผลลัพธ์:

ผลลัพธ์ของการยกเลิกการเลือกหมวดหมู่สำหรับโพสต์ที่ไม่มีปลั๊กอินจำนวนมาก

คำสุดท้าย

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

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

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