ไดเรกทอรีบทความ
คุณเคยหรือยังWordPressข้อความแสดงข้อผิดพลาด"Uncaught Error: Call to undefined function create_function() in SNIPPET:62“หายปวดหัวหรือยัง”
ปัญหานี้แก้ไขได้ไม่ยากจริงๆ เรามาพูดคุยโดยละเอียดเกี่ยวกับสาเหตุที่ปัญหานี้เกิดขึ้นและวิธีแก้ไขด้วยโค้ดที่ง่ายและมีประสิทธิภาพ
เหตุใดฉันจึงได้รับข้อผิดพลาด create_function
ความรู้พื้นฐานเล็กน้อยก่อน ใน PHP 7.2create_function()เลิกใช้แล้ว และใน PHP 8.0 ฟังก์ชันนี้ถูกลบออกโดยตรง กล่าวอีกนัยหนึ่ง หากเซิร์ฟเวอร์ของคุณอัปเกรดเป็น PHP 7.2 ขึ้นไปแล้ว และยังคงใช้โค้ดเก่าอยู่ ปัญหานี้จะเกิดขึ้น
แต่แก่นแท้ของปัญหาคือ:create_functionเป็นผลิตภัณฑ์จากยุคเก่า ปัญหาไม่เพียงแต่ไม่รองรับอีกต่อไป แต่ยังทำให้เกิดประสิทธิภาพที่ไม่ดีและความเสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้นอีกด้วย วิธีแก้ไขใหม่คือการใช้ฟังก์ชั่นที่ไม่ระบุชื่อ(ฟังก์ชันที่ไม่ระบุชื่อ)
แก้ไขโค้ด: แก้ไขข้อผิดพลาด create_function

ตอนนี้เรามาดูวิธีการแทนที่โค้ดเก่ากัน ต่อไปนี้คือแผนการปรับเปลี่ยนโค้ดเฉพาะ:
รหัสต้นฉบับ
//彻底禁止WordPress缩略图
add_filter( 'add_image_size', create_function( '', 'return 1;' ) );
//自定义登录页面的LOGO链接为首页链接
add_filter('login_headerurl', create_function(false,"return get_bloginfo('url');"));
รหัสที่แก้ไข
// 彻底禁止 WordPress 缩略图
add_filter( 'add_image_size', function() { return 1; } );
// 自定义登录页面的 LOGO 链接为首页链接
add_filter( 'login_headerurl', function() { return get_bloginfo('url'); } );
คำอธิบายรหัส:
function() { return 1; }เป็นฟังก์ชันที่ไม่ระบุชื่อที่ไม่ต้องใช้พารามิเตอร์และส่งคืน1.get_bloginfo('url')เป็นฟังก์ชันที่ส่งคืนที่อยู่หน้าแรกของเว็บไซต์ เรายังปิดท้ายด้วยฟังก์ชันที่ไม่ระบุชื่ออีกด้วย
แนวทางที่ดีกว่า: จัดการการปิดใช้ภาพขนาดย่อด้วยความระมัดระวัง
การปิดใช้งานภาพขนาดย่อของ WordPress อย่างสมบูรณ์อาจไม่ใช่ตัวเลือกที่ดีที่สุด หากธีมหรือปลั๊กอินบางตัวต้องใช้รูปภาพในขนาดเฉพาะ การปิดใช้งานทั้งหมดอาจทำให้เกิดปัญหาที่ไม่คาดคิด
ต่อไปนี้เป็นวิธีแก้ปัญหาที่ยืดหยุ่นมากขึ้น: เลือกปิดการใช้งานขนาดภาพที่ไม่จำเป็นผ่านฟิลเตอร์
รหัสตัวอย่าง
add_filter( 'intermediate_image_sizes_advanced', function( $sizes ) {
unset( $sizes['thumbnail'] ); // 禁用缩略图
unset( $sizes['medium'] ); // 禁用中等大小
unset( $sizes['large'] ); // 禁用大图
return $sizes;
} );
วิธีการนี้ไม่เพียงแต่แก้ปัญหาเท่านั้น แต่ยังรักษาความเข้ากันได้กับคุณสมบัติบางอย่างอีกด้วย
แก้ไขโค้ด
เพิ่มรหัสที่ปรับเปลี่ยนไปยังตำแหน่งใดตำแหน่งหนึ่งต่อไปนี้:
- ของหัวข้อปัจจุบัน
functions.phpไฟล์. - ปลั๊กอินฟังก์ชันแบบกำหนดเอง (วิธีที่แนะนำเพื่อหลีกเลี่ยงการครอบคลุมโค้ดโดยการอัพเดตธีม)
ฉันควรทำอย่างไรหากข้อผิดพลาดยังคงเกิดขึ้นหลังจากแก้ไขโค้ดแล้ว?
หากเปิดใช้ปลั๊กอินพื้นที่เก็บข้อมูล Fluent-snippet-storage แล้วและยังมีข้อผิดพลาดหลังการแก้ไข ปลั๊กอินดังกล่าวอาจอยู่ในfluent-snippet-storage/index.phpมีแคชอยู่ในนั้นและจำเป็นต้องลบรหัสข้อผิดพลาดของ error_files
เปิดขึ้นwp-content/fluent-snippet-storage/index.phpไฟล์ เลื่อนลงไปจนสุดแล้วค้นหาโค้ดที่คล้ายกับข้อความต่อไปนี้:
'error_files' => array ( '1-e7a7bbe999a4wordpresse5a4b4e983a8e697a0e794a8e4bfa1e681af.php' => 'Uncaught Error: Call to undefined function create_function() in SNIPPET:62', ), );
รหัสสำหรับลบบันทึกข้อผิดพลาดเหล่านี้:
'1-e7a7bbe999a4wordpresse5a4b4e983a8e697a0e794a8e4bfa1e681af.php' => 'Uncaught Error: Call to undefined function create_function() in SNIPPET:62',
เคล็ดลับโบนัส: ตรวจสอบความเข้ากันได้ของโค้ด
ก่อนที่จะแก้ไขโค้ด แนะนำให้สำรองไฟล์เว็บไซต์และฐานข้อมูลก่อน คุณสามารถใช้ปลั๊กอิน (เช่น UpdraftPlus) เพื่อทำการสำรองข้อมูลอย่างรวดเร็วและหลีกเลี่ยงการถูกไม่ทันระวังเมื่อมีสิ่งผิดปกติเกิดขึ้น
ในเวลาเดียวกัน หากคุณไม่คุ้นเคยกับ PHP ขอแนะนำให้ลองแก้ไขโค้ดในสภาพแวดล้อมการทดสอบ แทนที่จะใช้งานสภาพแวดล้อมการใช้งานจริงโดยตรง
การเพิ่มประสิทธิภาพโค้ดคือการต่อสู้อย่างต่อเนื่อง
คำถามนี้ดูเหมือนง่าย แต่จริงๆ แล้วเป็นปัญหาทั่วไปที่ต้องเผชิญในการพัฒนาเว็บไซต์:ความเข้ากันได้ของโค้ดเก่ากับสภาพแวดล้อมใหม่- ไม่ว่าจะเป็นการอัปเกรดเวอร์ชัน PHP หรือการปรับปรุงฟังก์ชัน WordPress ทั้งหมดนี้ได้รับการออกแบบมาเพื่อให้เว็บไซต์ทำงานได้อย่างมีประสิทธิภาพและปลอดภัยยิ่งขึ้น
สำหรับนักพัฒนา การอัปเดตโค้ดให้ทันท่วงทีและเรียนรู้เทคโนโลยีใหม่ๆ ถือเป็นสิ่งสำคัญ ฟังก์ชันที่ไม่เปิดเผยตัวตนไม่เพียงแต่ทำให้โค้ดมีความกระชับมากขึ้น แต่ยังปรับปรุงประสิทธิภาพและลดความเสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้นอีกด้วย การเพิ่มประสิทธิภาพทุกครั้งจะทำให้เว็บไซต์ของคุณก้าวไปอีกขั้นหนึ่ง
总结
create_function()ไม่รองรับ PHP 7.2 ขึ้นไปอีกต่อไป และขอแนะนำให้ใช้ฟังก์ชันที่ไม่ระบุชื่อแทน- หลังจากแก้ไขโค้ดแล้ว เว็บไซต์ของคุณจะมีประสิทธิภาพและปลอดภัยมากขึ้น
- เพื่อให้เข้ากันได้กับปลั๊กอินและธีมได้ดีขึ้น การเลือกขนาดรูปภาพที่ปิดใช้งานอาจเป็นวิธีแก้ปัญหาที่ดีกว่า
- การเพิ่มประสิทธิภาพโค้ดไม่เพียงแต่เกี่ยวกับการแก้ไขปัญหาเท่านั้น แต่ยังเป็นขั้นตอนในการปรับปรุงคุณภาพเว็บไซต์ของคุณอีกด้วย
หากคุณพบปัญหาที่คล้ายกัน คุณอาจต้องการลองวิธีแก้ปัญหาในบทความนี้
หวัง Chen Weiliang บล็อก ( https://www.chenweiliang.com/ ) แบ่งปันโดย "WordPress Uncaught Error: การเรียกไปยังฟังก์ชันที่ไม่ได้กำหนด create_function() Solution" อาจเป็นประโยชน์สำหรับคุณ
ยินดีต้อนรับสู่การแบ่งปันลิงค์ของบทความนี้:https://www.chenweiliang.com/cwl-32407.html
