แก้ไข “call_user_func_array() expects parameter 1 to be a valid callback, non-static method XXX:init() should not be called statically” ใน plugin “Jetpack for WordPress”

จากปัญหา

The following errors were reported: call_user_func_array() expects parameter 1 to be a valid callback, non-static method xxx::init() should not be called statically

ใน plugin “Jetpack for WordPress” ซึ่งเกิดจากการเขียนโค้ดไม่ตรงกับ Strict standards ใน PHP ที่อยู่ๆ ก็มีการเขียนไป call ตัว static method ใน method ที่ไม่ใช่ static ทำให้เกิดข้อผิดพลาดดังกล่าว

ปัญหานี้จะเกิดกับ Class ของ module ใน plugins “Jetpack for WordPress” ทั้งหมด 4 ตัว (ณ ตอนนี้ที่ไล่หาดู) โดยมี Class ดังต่อไปนี้

  • Jetpack_Notifications
  • Jetpack_Post_By_Email
  • Jetpack_Subscriptions
  • Jetpack_Likes

การแก้ไขก็ง่ายๆ ไม่มีอะไรซับซ้อน (ถ้าเข้าใจ)

โดยเพิ่ม “public static” ไปหน้า function &init() ให้เป็น public static function &init() ในไฟล์ subscriptions.php, post-by-email.php, notes.php และ likes.php ซึ่งอยู่ใน wp-content/plugins/jetpack/modules

เพียงแค่นี้ก็จบปัญหาครับ