Blogs

แก้ไข Superfly Menu ไม่ทำงานหลังอัพเดต WordPress 7.0

🔧
📌 Fix Guide · Superfly Menu 5.0.35

แก้ไข Superfly Menu
ไม่ทำงานหลังอัพเดต WordPress 7.0

วิธีแก้ไข SyntaxError ที่เกิดขึ้นเมื่อใช้ Superfly Menu 5.0.35 กับ WordPress เวอร์ชันใหม่ แก้ไขได้ 2 ไฟล์ ไม่ต้องรอ Developer

✍️ Jodbush Web Design 📅 5 มิถุนายน 2569 ⏱️ อ่าน 3 นาที
⚠️
ปัญหาที่พบ

หลังจากอัพเดต WordPress เป็นเวอร์ชันใหม่ Superfly Menu 5.0.35 หยุดทำงานทันที เมื่อเปิด DevTools (F12) จะพบ error ใน Console:

🔴
Uncaught SyntaxError: Invalid or unexpected token
(index):913:2108

Superfly Menu 5.0.35 เป็น Plugin รุ่นเก่า (ปี 2020) ที่ไม่ได้รับการอัพเดตมานาน จึงเกิด Incompatibility กับ JavaScript ของ WordPress รุ่นใหม่

🔍
สาเหตุของปัญหา (2 จุด)
จุดที่ 1: superfly-dynamic.php — PHP echo boolean เป็น String ว่าง ทำให้ JS อ่านผิด
จุดที่ 2: main.php — json_encode() ไม่ escape HTML ทำให้ JS String ขาดกลาง
🛠️
การแก้ไขที่ 1
1
superfly-dynamic.php — บรรทัดที่ 74–76
📁 wp-content/plugins/superfly-menu/superfly-dynamic.php
❌ โค้ดเดิม:
var mob_bar = '<?php echo $options['sf_mob_nav'] === 'yes'?>'; var pos = '<?php echo $options['sf_sidebar_pos']?>'; var iconbar = '<?php echo $options['sf_sidebar_style'] == 'toolbar'; ?>';
✅ แก้เป็น:
var mob_bar = <?php echo ($options['sf_mob_nav'] === 'yes') ? 'true' : 'false'; ?>; var pos = '<?php echo esc_js($options['sf_sidebar_pos']); ?>'; var iconbar = <?php echo ($options['sf_sidebar_style'] == 'toolbar') ? 'true' : 'false'; ?>;
💡 ทำไมต้องแก้?

PHP echo boolean false ออกมาเป็น String ว่าง แต่ JS ต้องการ keyword true/false — การใส่ quote ครอบทำให้ JS อ่านค่าผิด

🛠️
การแก้ไขที่ 2
2
main.php — บรรทัดที่ 506
📁 wp-content/plugins/superfly-menu/main.php
❌ โค้ดเดิม:
echo "<script>var SFM_template =" . json_encode($superflyHTML) . "</script>";
✅ แก้เป็น:
$sfm_template_json = json_encode($superflyHTML, JSON_HEX_TAG | JSON_UNESCAPED_UNICODE); echo "<script>var SFM_template =" . $sfm_template_json . "</script>";
💡 ทำไมต้องแก้?

JSON_HEX_TAG escape แท็ก HTML ให้ปลอดภัย และ JSON_UNESCAPED_UNICODE ทำให้ภาษาไทยใน Menu ไม่ทำให้ JS String ขาดกลาง

ขั้นตอนสุดท้าย
💾

บันทึกไฟล์ทั้ง 2 ไฟล์ที่แก้ไข

🧹

ล้างแคชPlugin Cache / Server Cache

🔄

รีเฟรชหน้าเว็บกด Ctrl+Shift+R

เขียนโดย Jodbush Web Design

ทดสอบกับ Superfly Menu 5.0.35 + WordPress 7.0 (PHP 8.3.30)

หากมีคำถามเพิ่มเติม ติดต่อได้ที่ jodbush.com