Нийтлэлийн лавлах
WordPress PHP алдаа нь сүнсний зайнаас үүдэлтэй байж болно!
Программистуудын хамгийн их айдаг зүйл бол алдаа биш, харин тэдний сэтгэл хөдлөлийг алдаагаар тоглох явдал юм.
Таны бичсэн логик сайн байгаа нь ойлгомжтой, гэхдээ PHP танд өгдөг syntax errorЧи болзохдоо гурван минут хоцорч, нөгөө хүн нүүрээ буруулан "чи надад хайргүй" гэж хэлэх шиг. Та маш их буруутай санагдаж, гар шидэхийг хүсч байна.

WordPress PHP яагаад алдаа мэдээлдэг вэ?
PHP-ээс өгсөн тушаал нь:
syntax error, unexpected single-quoted string "wpturbo_handle_upload_convert_...", expecting ")"
Хүний хэлээр орчуулбал: Би хаалтын хаалт хүлээж байсан ч та тайлагдашгүй ааштай, хачирхалтай дүрүүдийг надад чихэв.
Тэгэхээр ямар асуудал байна вэ? Энэ бол таны функциональ логик биш, гэмгүй мэт санагдах мөр юм:
add_filter('wp_handle_upload', 'wpturbo_handle_upload_convert_to_webp');
Код дахь сүнсний орон зай
Асуудлын гол нь кодыг хуулж буулгахад холиод байдаг бүрэн өргөн зай эсвэл Тэг өргөн зай.
Эдгээр зүйлс нь редактор дээр энгийн нүдэнд үл үзэгдэх боловч PHP-г задлан шинжлэхэд галзуурах болно.
Нэг аяга амттай гоймон идэхтэй адил боловч гэнэт элсэн ширхэгийг хазаж, хамгаалалт тань тэр дороо тасардаг. Одоогийн байдлаар PHP ийм л санагдаж байна.
Үүнийг бичих зөв арга юу вэ?
Таны хийх ёстой зүйл бол үнэндээ маш энгийн. Эдгээр бүх сүнсний орон зайг сольж, хамгийн цэвэр хагас өргөнтэй зайг хадгал.
Зөв WordPress код нь дараах байдалтай байна.
add_filter('wp_handle_upload', 'wpturbo_handle_upload_convert_to_webp');
function wpturbo_handle_upload_convert_to_webp($upload) {
if (in_array($upload['type'], ['image/jpeg', 'image/png', 'image/gif'])) {
$file_path = $upload['file'];
if (extension_loaded('imagick') || extension_loaded('gd')) {
$image_editor = wp_get_image_editor($file_path);
if (!is_wp_error($image_editor)) {
// Set WebP quality (adjust as needed)
$quality = 80; // Adjust between 0 (low) to 100 (high)
$image_editor->set_quality($quality);
$file_info = pathinfo($file_path);
$dirname = $file_info['dirname'];
$filename = $file_info['filename'];
$def_filename = wp_unique_filename($dirname, $filename . '.webp');
$new_file_path = $dirname . '/' . $def_filename;
$saved_image = $image_editor->save($new_file_path, 'image/webp');
if (!is_wp_error($saved_image) && file_exists($saved_image['path'])) {
$upload['file'] = $saved_image['path'];
$upload['url'] = str_replace(basename($upload['url']), basename($saved_image['path']), $upload['url']);
$upload['type'] = 'image/webp';
@unlink($file_path);
}
}
}
}
return $upload;
}
Үүнээс хэрхэн зайлсхийх вэ?
Та хуулж буулгах болгондоо сандарч байх хэрэгтэй гэж гайхаж байгаа байх. Хариулт нь: бүү сандар, харин ухаалаг бай.
- VS Code гэх мэт хачирхалтай тэмдэгтүүдийг автоматаар тодруулдаг найдвартай засварлагчийг ашигла.
- Файлыг нээхдээ үүнийг UTF-8 кодчилолоор хадгалахыг оролдоорой, энэ нь "сүнс тэмдэг" үүсэх эрсдлийг хоёр дахин бууруулж чадна.
- Хэрэв та үнэхээр санаа зовж байгаа бол сэжигтэй кодыг энгийн текст хэрэгсэлд буулгаж, цэвэрлэ.
Халуун тогоо идэхээсээ өмнө хүнсний ногоогоо угаадаг шиг олон ослоос сэргийлж чадна.
Дүгнэлт
Энэ алдаа нь нууцлаг мэт санагдаж болох ч логик нь маш тодорхой юм. Програмчлал нь шүлэг бичихтэй адил юм; цэг таслал, хоорондын зай нь хэмнэлийн сүнс юм. Ганц буруу зай нь найрал хөгжимд гэнэт гарч ирэх аягүй туба шиг кодын хэмнэлийг алдагдуулж болно.
Код бичихдээ бид нэг төрлийн "бэлгэ тэмдгийн цэвэр байдал"-ыг хөгжүүлэх ёстой. Зөвхөн нарийн ширийн зүйлийг төгс төгөлдөр болгож чадвал логик нь жигд ажиллах болно.ФилософиНэг ёсондоо энэ нь мөн л нарийвчлал, эмх цэгцтэй байхыг эрмэлзэж байгаа хэрэг юм.
总结
Гурван гол цэг байдаг:
- Алдаа нь логикийн асуудал биш, харин сүнсний орон зай юм.
- Зөв засвар бол үүнийг хагас өргөнтэй стандарт зайгаар солих явдал юм.
- Кодын цэвэр байдлыг хөгжүүлж, далд тэмдэгтүүдээс хол байгаарай.
Тиймээс, дараагийн удаад та тайлагдашгүй гэмээр алдаатай тулгарвал та бас сэжиглэж магадгүй юм: Ажил дээр үл үзэгдэх "сүнс" байна уу? Арга хэмжээ авч, тэдгээрийг цэвэрлэвэл таны код жигд ажиллах болно.
Hope Chen Weiliang блог ( https://www.chenweiliang.com/ ) "WordPress синтаксийн алдаа: Гэнэтийн нэг ишлэл бүхий мөрийг засах төгс гарын авлага"-г хуваалцсан нь танд тустай байж магадгүй юм.
Энэ нийтлэлийн холбоосыг хуваалцахад тавтай морилно уу:https://www.chenweiliang.com/cwl-33245.html
Илүү олон далд заль мэхийг нээхийн тулд манай Telegram сувагт нэгдэнэ үү!
Хэрэв танд таалагдвал лайк дарж, хуваалцаарай! Таны шэйр, лайк бол бидний байнгын урам зориг юм!