จัดการเว็บ WordPress 90 กว่าเว็บ จากที่เดียว — ทำได้จริงไหม?

ถ้าคุณเป็นคนที่ดูแลเว็บ WordPress หลายสิบเว็บ คุณน่าจะเข้าใจความรู้สึกนี้ดี — เปิด wp-admin ทีละเว็บ อัพเดท plugin ทีละตัว แก้ footer ทีละหน้า วนซ้ำไปเรื่อยๆ จนบางทีลืมไปว่าเว็บไหนทำแล้ว เว็บไหนยังไม่ได้ทำ

ผมเจอปัญหานี้แบบเต็มๆ เพราะดูแลเว็บ WordPress อยู่เกือบร้อยเว็บ กระจายอยู่บนหลาย server แต่ละเว็บมีคนดูแลคนละคน ข้อมูลเว็บเก็บไว้บน Notion ส่วน server ก็ใช้ Cloudways

บทความนี้จะเล่าว่าผมเปลี่ยนจากการนั่งเปิด wp-admin ทีละเว็บ มาเป็นระบบที่สั่งงานจาก terminal ตัวเดียว จัดการได้ทุกเว็บ แล้วอัพเดทสถานะกลับ Notion อัตโนมัติ


ปัญหาที่เจอ

1. เว็บเยอะเกินจะจัดการด้วยมือ

ลองนึกภาพว่าคุณมีเว็บ 90 กว่าเว็บ แค่จะอัพเดท plugin ทุกเว็บ ถ้าทำด้วยมือ ต้อง login เข้า wp-admin ทีละเว็บ กด update ทีละตัว ใช้เวลาเป็นวันเลย ยังไม่นับเรื่องอื่นๆ เช่น เปลี่ยน footer, แก้ menu, อัพบทความ หรือตั้งค่า SEO

2. ข้อมูลกระจัดกระจาย

เว็บไหนอยู่ server ไหน? ใครเป็นคนดูแล? Domain หมดอายุเมื่อไหร่? ข้อมูลพวกนี้เก็บไว้หลายที่ ต้องเปิด Notion ดูข้อมูลเว็บ แล้วไป login Cloudways ดูว่าอยู่ server ไหน แล้วค่อย SSH เข้าไปจัดการ วนไปวนมาแบบนี้เสียเวลามาก

3. ไม่มีระบบ tracking

ทำเสร็จแล้วก็ไม่ได้อัพเดทสถานะกลับไปที่ไหน พอเดือนหน้ามาดูอีกทีก็ไม่รู้ว่าเว็บไหนอัพเดทแล้ว เว็บไหนยังค้าง งานก็ตกหล่นบ่อย


วิธีแก้ปัญหา

หลังจากลองหาวิธีมาหลายแบบ ทั้ง MainWP, ManageWP, InfiniteWP ผมพบว่าวิธีที่ตอบโจทย์ที่สุดสำหรับเคสของผมคือ การรวม 3 อย่างเข้าด้วยกัน

1. Notion เป็นศูนย์กลางข้อมูล (Source of Truth)

Notion เก็บข้อมูลทุกเว็บอยู่แล้ว ผมแค่เพิ่ม property ที่จำเป็นเข้าไป เช่น folder name ของแต่ละเว็บบน server ทำให้ระบบรู้ว่าเว็บไหนอยู่ตรงไหน

สิ่งที่ Notion เก็บ:

  • ชื่อ domain
  • อยู่ server ไหน (IP)
  • Folder name บน server
  • สถานะงาน
  • คนรับผิดชอบ
  • วันหมดอายุ domain

2. Notion API เชื่อมต่อข้อมูล

Notion มี API ที่สามารถทั้งอ่านและเขียนข้อมูลกลับได้ ผมสร้าง Integration ขึ้นมาแล้ว connect กับ database ที่เก็บข้อมูลเว็บทั้งหมด

วิธีสร้าง Notion Integration:

  1. ไปที่ notion.so/profile/integrations
  2. สร้าง Integration ใหม่ ตั้งชื่อตามชอบ
  3. เลือก workspace ที่ต้องการ
  4. จะได้ API key มา (ขึ้นต้นด้วย ntn_)
  5. กลับไปที่ database ใน Notion แล้ว connect integration เข้ากับ database

ข้อสำคัญที่หลายคนลืม คือ ต้องไป connect integration เข้ากับ database ด้วย ไม่ใช่แค่สร้าง integration แล้วจบ ถ้าไม่ทำขั้นตอนนี้ API จะอ่านข้อมูลไม่ได้

3. SSH Key สำหรับเข้าถึง Server

แทนที่จะใช้ password ซึ่งไม่ปลอดภัยและจัดการยาก ผมใช้ SSH key แทน สร้าง key pair ขึ้นมาแล้วเอา public key ไปวางที่ทุก server

ssh-keygen -t rsa -b 4096 -C "wp-manager"

หลังรันคำสั่งนี้จะได้ไฟล์ 2 ตัว:

  • Private key — เก็บไว้บนเครื่อง ห้ามแชร์
  • Public key — เอาไปวางที่ server ทุกตัว

ถ้าใช้ Cloudways ไปที่ Server → Master Credentials → SSH Public Keys แล้ววาง public key เข้าไป ทำทุก server เสร็จแล้ว SSH เข้าได้ทุกเว็บโดยไม่ต้องใส่ password

ข้อควรรู้: Cloudways ไม่รองรับ ed25519 key ต้องใช้ RSA 4096 เท่านั้น ตรงนี้ผมเสียเวลาไปพอสมควรกว่าจะรู้

4. WP-CLI จัดการ WordPress ผ่าน Command Line

WP-CLI คือเครื่องมือที่ทำให้จัดการ WordPress ได้จาก terminal โดยไม่ต้องเปิดหน้า admin เลย ทำได้เกือบทุกอย่างที่ทำผ่าน wp-admin ไม่ว่าจะอัพเดท plugin, สร้าง post, แก้ menu, เปลี่ยน footer, search-replace ใน database ทั้งหมดทำได้หมดแค่พิมพ์คำสั่ง

ตัวอย่างคำสั่งที่ใช้บ่อย:

  • อัพเดท plugin ทุกตัว: wp plugin update --all
  • สร้าง post ใหม่: wp post create --post_title="ชื่อบทความ" --post_status=publish
  • เปลี่ยน URL ทั้ง database: wp search-replace 'old-url.com' 'new-url.com'
  • ดู site URL: wp option get siteurl

ถ้าใช้ Cloudways ข้อดีคือ WP-CLI ติดตั้งมาให้พร้อมใช้เลย ไม่ต้องลงเพิ่ม

5. AI Agent เป็นตัวประสาน

ส่วนสุดท้ายที่ทำให้ทุกอย่างเชื่อมกันคือ AI agent ที่ทำงานผ่าน terminal ผมใช้ Claude Code ซึ่งสามารถอ่านไฟล์ config, เรียก Notion API, SSH เข้า server, รัน WP-CLI ได้ทั้งหมด

ผมสร้างไฟล์ config ที่เก็บข้อมูล server ทั้งหมด แล้วเขียน instruction file ให้ AI อ่านว่าต้องทำอะไรบ้าง มี workflow ยังไง พอสั่งงานเป็นภาษาคนปกติ มันก็จัดการทุกอย่างให้


ขั้นตอนการ Setup ตั้งแต่เริ่มต้น

ขั้นตอนที่ 1 — จัดข้อมูลบน Notion

ถ้ายังไม่มี database สำหรับเก็บข้อมูลเว็บ ให้สร้างขึ้นมา ควรมี property อย่างน้อยเหล่านี้:

  • Domain (ชื่อเว็บ)
  • Hosting (IP ของ server)
  • App Folder (ชื่อ folder บน server)
  • Status (สถานะงาน)
  • คนรับผิดชอบ

ถ้ามี database อยู่แล้วบน workspace คนอื่น สามารถ Duplicate มาไว้ workspace ส่วนตัวได้เลย เปิด page → จุดสามจุดมุมขวาบน → Duplicate → เลือก workspace ปลายทาง

ขั้นตอนที่ 2 — สร้าง Notion Integration

ไปที่ notion.so/profile/integrations สร้าง integration แล้วเอา API key มา อย่าลืมกลับไป connect integration กับ database ด้วย

ขั้นตอนที่ 3 — สร้าง SSH Key

รันคำสั่งสร้าง key บนเครื่อง กด Enter ผ่านทุกคำถาม แล้วเอา public key ไปวางที่ทุก server

ขั้นตอนที่ 4 — Map Folder กับ Domain

ขั้นตอนนี้สำคัญมาก เพราะ Cloudways ใช้ชื่อ folder แบบสุ่ม เช่น buxexmnybf แทนที่จะเป็นชื่อ domain ต้อง SSH เข้าไปแล้วรันคำสั่งเพื่อดูว่า folder ไหนคือเว็บอะไร:

for app in $(ls /home/master/applications/); do
  cd /home/master/applications/$app/public_html
  url=$(wp option get siteurl --allow-root 2>/dev/null)
  echo "$app → $url"
done

พอได้ mapping แล้ว เอาไปอัพเดทใน Notion ว่า domain ไหนอยู่ folder ไหน

ขั้นตอนที่ 5 — สร้าง Config File

สร้าง folder สำหรับ project แล้วใส่ไฟล์เหล่านี้:

config.yaml — เก็บข้อมูล server ทั้งหมด เช่น ชื่อ server, IP, SSH username, Notion API key, Database ID

CLAUDE.md — เขียนคำอธิบายให้ AI อ่าน ว่ามี server กี่ตัว, WordPress path อยู่ตรงไหน, Notion database มี property อะไรบ้าง, workflow การทำงานเป็นยังไง

servers.md — ตาราง quick reference สำหรับดู server, IP, username ได้เร็วๆ

ขั้นตอนที่ 6 — ทดสอบ

เปิด AI agent ใน folder ที่สร้าง แล้วลองสั่งงานง่ายๆ ก่อน เช่น ให้ดึงข้อมูลเว็บทั้งหมดจาก Notion มาดู หรือให้ SSH เข้า server แล้วเช็คว่า WP-CLI ทำงานได้ปกติ


ผลลัพธ์

หลังจาก setup เสร็จ สิ่งที่เปลี่ยนไปคือ:

ก่อนหน้า — อัพเดท plugin 90 เว็บใช้เวลาเป็นวัน เปิด wp-admin ทีละเว็บ login ทีละเว็บ กด update ทีละตัว

หลัง setup — สั่งคำสั่งเดียว ระบบวนทุกเว็บทุก server อัพเดทให้ แล้วอัพเดทสถานะกลับ Notion ให้ด้วย ใช้เวลาไม่กี่นาที

งานที่เคยทำซ้ำๆ ทั้งวัน ตอนนี้สั่งทีเดียวจบ ไม่ว่าจะเป็นเปลี่ยน link ทุกเว็บ, อัพบทความ bulk, เช็ค health check, แก้ footer, หรือจัดการ menu


ข้อจำกัดที่ต้องรู้

ระบบนี้ไม่ได้ทำได้ทุกอย่าง มีบางงานที่ยังต้องเข้า wp-admin เอง:

  • แก้ layout ของ Page Builder เช่น Elementor, Divi ที่เก็บ layout เป็น JSON ซับซ้อนใน database แก้ผ่าน command line ยากมาก
  • Activate License Key ของ plugin premium ต้องไปกรอกใน UI
  • ตั้งค่า plugin ที่มี setup wizard บาง plugin ต้องผ่าน wizard ก่อนถึงจะใช้งานได้
  • งานที่ต้องดูผลลัพธ์แบบ visual ต้องแคปหน้าจอมาดูแล้วแก้ไป วนเป็น loop

แต่สำหรับงาน bulk ที่ทำซ้ำหลายเว็บ ระบบนี้ครอบคลุมประมาณ 80-90% ของงานทั้งหมด ส่วนที่เหลือค่อยเข้าทำด้วยมือ


สรุป

ถ้าคุณดูแล WordPress หลายสิบเว็บ ลองมองระบบ centralized management ดูครับ ไม่จำเป็นต้องทำเหมือนผมทุกอย่าง แค่เริ่มจากจุดเล็กๆ เช่น จัดข้อมูลเว็บให้เป็นระบบ ตั้ง SSH key ให้เรียบร้อย แล้วลองใช้ WP-CLI ดู แค่นี้ก็ประหยัดเวลาได้เยอะมากแล้ว

เครื่องมือหลักที่ใช้:

  • Notion + Notion API — เก็บข้อมูลและ sync สถานะ
  • SSH Key — เข้าถึง server โดยไม่ต้องใส่ password
  • WP-CLI — จัดการ WordPress ผ่าน command line
  • AI Agent (Claude Code) — ประสานทุกอย่างเข้าด้วยกัน

หวังว่าบทความนี้จะเป็นประโยชน์กับคนที่กำลังเจอปัญหาเดียวกันครับ

Scroll to Top