4 เคล็ดลับในการแก้ไขไซต์ WordPress
เผยแพร่แล้ว: 2020-09-03เมื่อไม่กี่วันก่อน เพื่อนคนหนึ่งโทรมาบอกฉันว่าเขาได้รับมอบหมายให้ดูแลโครงการ WordPress แบบเก่า เห็นได้ชัดว่าเว็บไซต์ไม่ได้รับการอัปเดตมานานกว่าสามปีและมีปัญหาเกิดขึ้นทั่วทุกแห่ง ชายผู้น่าสงสารคนนั้นติดอยู่โดยสิ้นเชิง เพราะเขาไม่สามารถอัปเดตสิ่งใดในนั้นได้: ปลั๊กอิน ธีม เนื้อหา… ไม่มีอะไรทำงาน การกระทำทั้งหมด (นอกเหนือจากการเรียกดูไซต์เอง) ส่งผลให้ WordPress หยุดทำงานและแสดงข้อผิดพลาด
เมื่อเรามี WordPress ที่ใช้งานไม่ได้ซึ่งสร้างข้อผิดพลาดอย่างต่อเนื่องและไม่สามารถอัปเดตได้ สิ่งแรกที่เราต้องทำคือการระบุว่าเหตุใดจึงมีการทำงานในลักษณะที่เป็นอยู่ นั่นคือเราต้องหาตัวผู้กระทำผิด โดยปกติ ปัญหาใดๆ ที่คุณอาจพบในไซต์ WordPress เกิดขึ้นเนื่องจากธีมของคุณหรือปลั๊กอินหนึ่งตัว (หรือมากกว่า) ของคุณ
เมื่อพิจารณาถึงสิ่งนี้ ขั้นตอนปกติในการแก้ไขไซต์ WordPress คือการระบุปลั๊กอินที่ละเมิด กำจัดมันออกจากสมการ อัปเดตทุกอย่าง และสุดท้าย ดูว่าเราสามารถติดตั้งและอัปเดตปลั๊กอินที่ละเมิดบนเว็บไซต์ของเราใหม่ได้หรือไม่ หรือเราควรมองหา ทดแทน วันนี้ผมจะมาบอกเคล็ดลับง่ายๆ สี่ข้อที่จะค้นพบว่าเหตุใดเว็บไซต์จึงล้มเหลว และด้วยเหตุนี้จึงจะสามารถแก้ไขได้
การใช้บันทึกข้อผิดพลาดของเซิร์ฟเวอร์ของเรา
สมมติว่าสมมติฐานว่าเป็นปลั๊กอินที่ทำให้เกิดข้อผิดพลาดที่เรามีบนเว็บไซต์ของเรา สิ่งแรกที่เราต้องทำคือตรวจสอบสมมติฐานดังกล่าว มีสูตรที่แตกต่างกันสำหรับการทำเช่นนั้น โดยส่วนตัวแล้ว ฉันชอบเริ่มต้นด้วยการดูบันทึกข้อผิดพลาดของเซิร์ฟเวอร์ของฉัน ซึ่งมีตัวเลือกใน cPanel:

หวังว่าบันทึกข้อผิดพลาดไม่ได้มีเพียงร่องรอยของข้อผิดพลาดที่เกิดขึ้นบนเว็บไซต์ของเรา แต่ยังรวมถึงข้อมูลเกี่ยวกับ "ตำแหน่ง" ที่เกิดขึ้นและด้วยเหตุนี้ใครคือผู้กระทำผิด ตัวอย่างเช่น เมื่อสัปดาห์ที่แล้ว ฉันพบปัญหาต่อไปนี้ในบันทึกข้อผิดพลาดของสภาพแวดล้อมการพัฒนาของฉัน:
appserver_1 | [Mon Aug 24 09:18:20.977541 2020] [php7:notice] [pid 1107] [client 172.20.0.2:34396] PHP Notice: register_rest_route was called <strong>incorrectly</strong>. The REST API route definition for <code>yoast/v1/get_head</code> is missing the required <code>permission_callback</code> argument. For REST API routes that are intended to be public, use <code>__return_true</code> as the permission callback. Please see <a href="https://wordpress.org/support/article/debugging-in-wordpress/">Debugg ing in WordPress</a> for more information. (This message was added in version 5.5.0.) in /app/.lando/wordpress/wp-includes/functions.php on line 5225, referer: http://nab5.lndo.site/wp-admin/edit.php บันทึกกำลังรายงานการแจ้งเตือน PHP ที่เกิดขึ้นในไฟล์ของ WordPress ( wp-includes/functions.php ) ซึ่งไม่ได้บอกเราเกี่ยวกับ "ปลั๊กอินที่เป็นตัวการ" โชคดีที่ถ้าคุณอ่านข้อความทั้งหมด คุณจะเห็นว่ามันอธิบายสิ่งที่ล้มเหลว (เช่น การเรียกใช้ฟังก์ชัน register_rest_route ) และแจ้งให้เราทราบถึงสิ่งที่อาจผิดพลาด: Yoast (ดูว่ามันกล่าวถึง “ yoast/v1/get_head ” อย่างไร ?)
บันทึกข้อผิดพลาดเป็นวิธีที่ง่ายที่สุดในการค้นหาอย่างรวดเร็วว่ามีสิ่งผิดปกติเกิดขึ้นเมื่อใด/หรือไม่ และหากเป็นเช่นนั้น สาเหตุของข้อผิดพลาดคืออะไร ในตัวอย่างนี้ ฉันพบว่าฉันมีปัญหากับ Yoast และสิ่งที่ฉันต้องทำคืออัปเดตปลั๊กอินเป็นเวอร์ชันล่าสุด
การปิดใช้งานปลั๊กอินจากแดชบอร์ด WordPress
ขออภัย ไม่สามารถเข้าถึงบันทึกข้อผิดพลาดของเว็บไซต์ได้ตลอดเวลาเพื่อดูว่าสิ่งต่างๆ ไปทางทิศใต้เมื่อใด หรือหากคุณมีสิทธิ์เข้าถึงบันทึก แสดงว่าอาจไม่สมบูรณ์ ในกรณีเหล่านี้ เราต้องการสูตรอื่นเพื่อตรวจสอบ (หรือหักล้าง) สมมติฐานเริ่มต้นของเรา
สมมติว่าเว็บไซต์ของเราล้มเหลวเนื่องจากปลั๊กอินผิดพลาด สิ่งที่ง่ายที่สุดที่จะทำคือปิดใช้งานปลั๊กอินทั้งหมดและตรวจสอบว่าข้อผิดพลาดยังคงมีอยู่หรือไม่ หากไม่เป็นเช่นนั้น ผู้กระทำผิดคือปลั๊กอิน หากยังคงมีอยู่ปัญหาอยู่ที่อื่น
ในการดำเนินการนี้ ไปที่ WordPress Dashboard » Plugins เลือกปลั๊กอินที่ใช้งานอยู่ทั้งหมดของคุณและ ปิดการใช้งาน เป็นกลุ่ม:

และตรวจสอบว่าข้อผิดพลาดยังคงเกิดขึ้นหรือไม่ หากไม่เป็นเช่นนั้น คุณจะรู้ว่าปัญหาเกิดจากปลั๊กอินตัวใดตัวหนึ่งที่คุณเพิ่งปิดใช้งาน ตอนนี้ได้เวลาค้นพบว่าอันไหนอย่างแม่นยำ
หากต้องการระบุปลั๊กอินที่ผิดพลาด คุณสามารถเปิดใช้งานได้ทีละรายการและตรวจสอบว่าข้อผิดพลาดปรากฏขึ้นอีกครั้งเมื่อใด หรือหากต้องการเร็วขึ้น คุณสามารถใช้ขั้นตอนต่อไปนี้:
- เปิดใช้งานปลั๊กอินของคุณครึ่งหนึ่ง
- หากข้อผิดพลาดปรากฏขึ้นอีกครั้ง ผู้กระทำผิดอยู่ในครึ่งที่คุณเพิ่งเปิดใช้งาน คุณจึงสามารถเปิดใช้งานอีกครึ่งหนึ่งได้อย่างปลอดภัย
- หากข้อผิดพลาดไม่ปรากฏขึ้น ผู้กระทำผิดจะอยู่อีกครึ่งหนึ่ง
- เมื่อคุณทราบแล้วว่าปลั๊กอินที่ผิดพลาดคือ "กลุ่ม" ใด คุณจะต้องมุ่งความสนใจไปที่ปลั๊กอินนั้นและทำซ้ำตามขั้นตอน เปิดใช้งานครึ่งหนึ่งของกลุ่มนั้นและปิดใช้งานอีกครึ่งหนึ่ง (เช่น ตอนนี้คุณกำลังตรวจสอบหนึ่งในสี่ของทั้งหมด) และดูว่าเว็บไซต์ของคุณทำงานอย่างถูกต้องหรือไม่
- ทำซ้ำขั้นตอนจนกว่าคุณจะพบผู้กระทำผิด
เมื่อคุณทราบแล้วว่าปลั๊กอินใดใช้งานไม่ได้ วิธีแก้ไขปัญหานั้นขึ้นอยู่กับคุณ คุณอาจต้องติดต่อผู้พัฒนา พยายามแก้ไขปลั๊กอินด้วยตนเอง หรือแม้แต่พิจารณาแทนที่ด้วยตัวเลือกอื่น แต่อย่างน้อย ตอนนี้คุณก็รู้ว่าต้องทำอะไรเพื่อกำจัดปัญหา

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

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

ด้วยวิธีนี้ หาก “การปิดใช้งานปลั๊กอินทั้งหมด” จบลงด้วย WSOD ที่ไม่น่าจะเป็นไปได้ (แต่ไม่ใช่เป็นไปไม่ได้) คุณสามารถเปิดใช้งานปลั๊กอินทั้งหมดอีกครั้งโดยกู้คืนตัวเลือก active_plugins ในฐานข้อมูล
วิธีปิดการใช้งานปลั๊กอินผ่าน FTP
หากคุณรู้ว่าปัญหาของคุณเกิดจากปลั๊กอินบางตัว แต่คุณไม่มีทางปิดการใช้งานจากแดชบอร์ดของ WordPress คุณสามารถทำได้อย่างปลอดภัยผ่าน FTP
อย่างที่คุณรู้อยู่แล้ว ปลั๊กอินไม่มีอะไรมากไปกว่าชุดของไฟล์ เมื่อคุณติดตั้งปลั๊กอินใหม่บนเว็บไซต์ของคุณ โค้ดของปลั๊กอินจะจบลงที่โฟลเดอร์ wp-content/plugins ของ WordPress การใช้ประโยชน์จากความรู้นี้ เราสามารถปิดใช้งานปลั๊กอินได้โดย "ลบ" ออกจากโฟลเดอร์ดังกล่าว
ไปที่ cPanel ของเซิร์ฟเวอร์ของคุณและมองหาตัวเลือก FTP:

จากนั้น ใช้ FTP file explorer ค้นหาโฟลเดอร์ wp-content/plugins และค้นหาปลั๊กอินของคุณ:

ตอนนี้ สิ่งที่คุณต้องทำคือลบปลั๊กอินหรือเปลี่ยนชื่อโฟลเดอร์เพื่อไม่ให้ WordPress หาเจอ ด้วยวิธีนี้ หากคุณลงชื่อเข้าใช้ไซต์ WordPress ของคุณ WordPress จะไม่เห็นปลั๊กอินอีกต่อไปและจะไม่สามารถโหลดโค้ดที่ผิดพลาดได้ ซึ่งจะช่วยแก้ปัญหาที่คุณมีได้
ใช้ธีมเริ่มต้น
สุดท้าย หากสมมติฐานที่ว่าปัญหาเกิดจากปลั๊กอินตัวใดตัวหนึ่งของคุณไม่เป็นความจริง ขั้นตอนต่อไปคือการถือว่าผู้กระทำผิดเป็นธีมของคุณ ในกรณีนี้ สิ่งที่คุณต้องทำคือติดตั้งธีม WordPress เริ่มต้น (เช่น Twenty Twenty) และดูว่าปัญหาหายไปหรือไม่ ถ้ามันหายไป คุณรู้อยู่แล้วว่ามีบางอย่างผิดปกติกับธีมดั้งเดิมของคุณ หากไม่เป็นเช่นนั้น นั่นคือสิ่งที่เราต้องพูดถึงในโพสต์อื่น
หากคุณไม่สามารถเข้าถึงแดชบอร์ดของ WordPress ได้ไม่ว่าจะด้วยเหตุผลใดก็ตาม คุณสามารถติดตั้งธีมใหม่บนเว็บไซต์ของคุณโดยอัปโหลดผ่าน FTP ( wp-content/themes ) และเปลี่ยนธีมที่ใช้งานอยู่โดยใช้ฐานข้อมูล: เพียงแค่แก้ไข template ตัวเลือกและ stylesheet ใน wp_options ตัวอย่างเช่น คุณอาจต้องการตั้งค่าทั้งสองตัวเลือกเป็น twentytwenty สมมติว่าเป็นธีมที่คุณอัปโหลด
สรุป
วนิลา WordPress (ไม่มีปลั๊กอินและไม่มีธีมที่กำหนดเอง) ไม่น่าจะล้มเหลว ดังนั้น หากคุณมีปัญหาในเว็บไซต์ของคุณ ผู้ร้ายน่าจะเป็นหนึ่งในปลั๊กอินหรือธีมของคุณ ในโพสต์ของวันนี้ เราได้เห็นสูตรต่างๆ เพื่อค้นหาผู้กระทำผิด หลีกทางให้พ้นทาง และกู้คืนเว็บไซต์ ฉันหวังเป็นอย่างยิ่งว่าคุณไม่จำเป็นต้องใช้กลอุบายใดๆ เหล่านี้… แต่ถ้าคุณทำ ฉันหวังว่าพวกเขาจะมีประโยชน์
แล้วเว็บของเพื่อนล่ะ? ไม่รู้สิ บางคนบอกว่าเขาเปลี่ยนอาชีพ...
ภาพเด่นโดย Olia Nayda บน Unsplash
