WordPress REST API: ทำไมจึงบล็อกเฉพาะผู้ที่ไม่ได้ล็อกอิน แทนที่จะปิดทั้งหมด

WordPress REST API เปิดเผยชื่อผู้ใช้ของเว็บไซต์ผ่านที่อยู่ wp-json แม้แต่กับผู้เข้าชมที่ไม่ได้ล็อกอิน ถ้าปิดทั้งหมด บางครั้งการบันทึกในตัวแก้ไขบล็อกจะล้มเหลว บทความนี้จึงสรุปวิธีบล็อกเฉพาะคำขอที่ไม่ได้ล็อกอิน และตรวจด้วยการตอบกลับ 401
1️⃣ WordPress REST API คืออะไร: ที่อยู่ wp-json และหน้าที่
WordPress REST API คือฟีเจอร์พื้นฐานของ WordPress ที่รับส่งข้อมูลเว็บไซต์ เช่น โพสต์ หน้า และผู้ใช้ ในรูปแบบ JSON และตอบกลับอยู่ใต้ /wp-json/ ต่อท้ายที่อยู่เว็บไซต์
ใต้ /wp-json/ ที่อยู่จะแยกตามชนิดข้อมูล เช่น [wp/v2/posts]·[wp/v2/pages]·[wp/v2/users] และเรียกที่อยู่แต่ละอันว่า Endpoint ตัวแก้ไขบล็อกก็ส่งคำขอมาที่ที่อยู่นี้ตอนบันทึกโพสต์
https://example.com/wp-json/
https://example.com/wp-json/wp/v2/posts
https://example.com/wp-json/wp/v2/pages
https://example.com/wp-json/wp/v2/users2️⃣ ชื่อผู้ใช้ที่เปิดเผยผ่าน wp-json
Endpoint [wp/v2/users] ตอบกลับชื่อที่แสดงและค่า slug ของผู้ใช้ทุกคนที่เผยแพร่โพสต์ และโดยค่าเริ่มต้น slug จะเป็นชื่อล็อกอินตรง ๆ บัญชีผู้ดูแลระบบของเว็บไซต์ทดสอบ https://testpilotweb.com/ ก็มี slug เหมือนชื่อล็อกอิน
ถ้าชื่อล็อกอินถูกเปิดเผย ผู้โจมตีแค่หารหัสผ่านให้ได้ก็ล็อกอินได้ และหน้าล็อกอิน WordPress ของเว็บไซต์ทดสอบก็บันทึกการเดารหัสผ่าน 2,570 ครั้งในวันเดียวคือ 7 ตุลาคม 2026
แม้บล็อกที่อยู่นี้แล้ว ชื่อเดียวกันก็ยังอยู่ในที่อยู่หน้าผู้เขียน (/author/ชื่อล็อกอิน/)
3️⃣ สิ่งที่พังเมื่อปิดทั้งหมด
ถ้าปิด WP REST API ทั้งหมด การบันทึกโพสต์ในตัวแก้ไขบล็อกจะล้มเหลวเป็นอย่างแรก Perfmatters ซึ่งเป็นปลั๊กอินปรับแต่ง WordPress ตัวหนึ่งจึงแบ่งขอบเขตการปิดเป็น 2 ระดับคือ [Disable for Non-Admins] และ [Disable When Logged Out] ถ้าเว็บไซต์มีบัญชีผู้เขียนหรือผู้ร่วมเขียน [Disable for Non-Admins] ก็จะทำให้บัญชีเหล่านั้นบันทึกโพสต์ไม่ได้
แม้เว็บไซต์จะบล็อกเฉพาะผู้ที่ไม่ได้ล็อกอิน แต่พอเชื่อมคอนเนกเตอร์ MCP ใน claude.ai หลังยืนยันตัวตนเสร็จ เครื่องมือกลับแสดงเป็น 0 รายการ บันทึกของเซิร์ฟเวอร์มีคำขอ MCP เป็น 401 ทั้งหมด สาเหตุคือ Perfmatters บล็อกคำขอก่อนที่ MCP จะตรวจโทเคน
| ค่า [Disable REST API] | ที่อยู่ users สำหรับผู้เข้าชมที่ไม่ได้ล็อกอิน | การบันทึกโพสต์ของบัญชีที่ไม่ใช่ผู้ดูแลระบบ | เหมาะกับ |
|---|---|---|---|
| Default (Enabled) | เปิดเผยชื่อผู้ใช้ | บันทึกได้ | — |
| Disable for Non-Admins | 401 | บันทึกไม่ได้ | เว็บไซต์ที่ไม่มีบัญชีผู้เขียน·ผู้ร่วมเขียน |
| Disable When Logged Out | 401 | บันทึกได้ | เว็บไซต์ที่มีบัญชีผู้เขียน การเชื่อมต่อด้วยโทเคน เช่น MCP ให้เพิ่มเส้นทางยกเว้น |
4️⃣ การตั้งค่าบล็อกเฉพาะผู้ที่ไม่ได้ล็อกอิน (Perfmatters)
ในหน้าผู้ดูแลระบบ WordPress ไปที่ [ตั้งค่า] → [Perfmatters] → [General] เปลี่ยน [Disable REST API] ในส่วน [Core] เป็น [Disable When Logged Out] แล้วกด [บันทึกการเปลี่ยนแปลง]


ภาษาที่ Perfmatters รองรับ: อังกฤษ (ค่าเริ่มต้น) เกาหลี เยอรมัน ฝรั่งเศส อิตาลี ดัตช์ โปรตุเกส (บราซิล) รัสเซีย ยูเครน ตุรกี บัลแกเรีย ฮังการี อินโดนีเซีย เปอร์เซีย จีน (ตัวย่อ)

ถ้าเปิด /wp-json/wp/v2/users ในหน้าต่างไม่ระบุตัวตนโดยไม่ล็อกอิน จะได้การตอบกลับ 401 พร้อมข้อความ [Sorry, you do not have permission to make REST API requests.] ส่วนตัวแก้ไขบล็อกในสถานะล็อกอินก็ยังบันทึกโพสต์ได้ตามปกติ
[
{
"id": 1,
"name": "User A",
"slug": "user_a",
"link": "https://example.com/author/user_a/"
}
]
{⏎ "code": "rest_authentication_error",⏎ "message": "Sorry, you do not have permission to make REST API requests.",⏎ "data": { "status": 401 }⏎}
5️⃣ ตั้งข้อยกเว้นให้เส้นทางที่บล็อก
เมื่อต้องเปิดเฉพาะบางเส้นทางในสถานะที่บล็อกไว้ ให้เพิ่มเส้นทางนั้นในฟิลเตอร์ [perfmatters_rest_api_exceptions] ของ Perfmatters ปัญหาเครื่องมือ 0 รายการของคอนเนกเตอร์ MCP ใน claude.ai แก้ได้ด้วยการสร้างสนิปเปต PHP ในเมนู [Code] ของ Perfmatters ให้ยกเว้นเฉพาะเส้นทาง MCP
add_filter('perfmatters_rest_api_exceptions', function($exceptions) {
$exceptions[] = '/mcp/mcp-oauth-server';
return $exceptions;
});แม้ตั้งข้อยกเว้นแล้ว คำขอที่ไม่มีโทเคนก็ถูก MCP บล็อกเองด้วยข้อความ [MCP authentication required.] และการตอบกลับ 401 ส่วน /wp-json/wp/v2/users ก็ยังได้การตอบกลับ 401 จาก Perfmatters ต่อไป
[MCP authentication required.]
[Remove REST API Links] ในส่วน [Core] เดียวกันเป็นการตั้งค่าที่ลบแค่ลิงก์ api.w.org ออกจากส่วนหัวของหน้าและ Header ของการตอบกลับ ส่วน WP REST API ยังตอบกลับตามเดิม
🔢 FAQ & เนื้อหาแนะนำ
MCP
WP Rocket MCP Server
วิธีเชื่อมต่อให้เครื่องมือ AI ล้างแคชและเปลี่ยนการตั้งค่าแทนการใช้หน้าผู้ดูแลระบบ
ความปลอดภัย
Wordfence vs iThemes Security
เปรียบเทียบปลั๊กอินความปลอดภัย 2 ตัวที่กันการเดารหัสผ่านและมัลแวร์
ℹ️ ประกาศเรื่องลิงก์แอฟฟิลิเอต
เนื้อหาของเว็บไซต์นี้มีลิงก์แอฟฟิลิเอต หากผู้เข้าชมซื้อสินค้าหรือบริการผ่านลิงก์เหล่านี้ เว็บไซต์นี้จะได้รับค่าคอมมิชชันจากผู้ขาย ในกระบวนการนี้ ราคาที่ผู้ซื้อจ่าย(ราคาจะลดลงเมื่อมีโปรโมชัน↓)จะไม่สูงขึ้นแต่อย่างใด ราคา ส่วนลด และข้อมูลสต็อกที่แสดงเป็นข้อมูล ณ เวลาที่เขียนและอาจต่างจากความเป็นจริง โปรดตรวจสอบกับผู้ขายอีกครั้งก่อนซื้อ การเลือกและการประเมินสินค้าเขียนตามเกณฑ์ของเราเอง และการได้รับค่าคอมมิชชันหรือไม่ไม่มีผลต่อลำดับการแนะนำหรือเนื้อหาการประเมิน