Cyfeiriadur Erthygl
WordPress Gall gwallau PHP gael eu hachosi gan fylchau cysgodol!
Nid bygiau yw'r hyn y mae rhaglennwyr yn ei ofni fwyaf, ond cael eu hemosiynau'n cael eu chwarae gan fygiau.
Mae'r rhesymeg a ysgrifennoch chi yn amlwg yn iawn, ond mae PHP yn rhoi i chi syntax errorMae fel petaech chi dair munud yn hwyr am ddyddiad, ac mae'r person arall yn troi ei wyneb i ffwrdd ac yn dweud "dydych chi ddim yn fy ngharu i". Rydych chi'n teimlo cymaint o gamgymeriad nes eich bod chi eisiau taflu'r bysellfwrdd.

Pam mae WordPress PHP yn adrodd gwall?
Yr awgrym a roddir gan PHP yw:
syntax error, unexpected single-quoted string "wpturbo_handle_upload_convert_...", expecting ")"
Wedi'i gyfieithu i iaith ddynol, mae'n golygu: Roeddwn i'n disgwyl cromfach gloi, ond fe wthioch chi linyn rhyfedd o gymeriadau i mewn i mi, gyda thymer anesboniadwy.
Felly beth yw'r broblem? Nid eich rhesymeg ffwythiant yw hi, ond y llinell ymddangosiadol ddiniwed honno:
add_filter('wp_handle_upload', 'wpturbo_handle_upload_convert_to_webp');
Bylchau ysbryd mewn cod
Craidd y broblem yw, pan fyddwch chi'n copïo a gludo'r cod, rydych chi'n cymysgu gofod lled llawn neu Gofod lled sero.
Mae'r pethau hyn yn anweledig i'r llygad noeth yn y golygydd, ond byddant yn gyrru PHP yn wallgof pan gaiff ei ddadansoddi.
Mae fel bwyta powlen o nwdls blasus, ond yn sydyn rydych chi'n brathu gronyn o dywod ac mae eich amddiffynfeydd yn cael eu torri ar unwaith. Dyma sut mae PHP yn teimlo ar hyn o bryd.
Beth yw'r ffordd gywir o'i ysgrifennu?
Mae'r hyn sydd angen i chi ei wneud yn syml iawn mewn gwirionedd. Disodli'r holl fylchau ysbryd hynny a chadw'r bylchau hanner lled puraf.
Dyma'r cod WordPress cywir:
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;
}
Sut gellir osgoi'r sefyllfa hon?
Efallai eich bod chi'n pendroni, oes rhaid i chi fod yn nerfus bob tro rydych chi'n copïo a gludo? Yr ateb yw: peidiwch â chynhyrfu, ond byddwch yn glyfar.
- Defnyddiwch olygydd dibynadwy, fel VS Code, a all amlygu cymeriadau rhyfedd yn awtomatig.
- Wrth agor ffeil, ceisiwch ei chadw mewn amgodio UTF-8, a all leihau'r risg o "symbolau ysbryd" i'r hanner.
- Os ydych chi wir yn poeni, gludwch y cod amheus i mewn i offeryn testun plaen a'i lanhau.
Yn union fel golchi'r llysiau cyn bwyta pot poeth, gellir osgoi llawer o ddamweiniau.
Casgliad
Efallai y bydd y gwall hwn yn ymddangos yn ddirgel, ond mae ei resymeg yn glir iawn mewn gwirionedd. Mae rhaglennu fel ysgrifennu barddoniaeth; atalnodi a bylchau yw enaid rhythm. Gall un bylchau anghywir daflu'r cod oddi ar rythm, fel tiwba allan o diwn yn ymddangos yn sydyn mewn cerddorfa.
Wrth ysgrifennu cod, rhaid inni ddatblygu rhyw fath o "lendid symbolau". Dim ond trwy gyflawni perffeithrwydd mewn manylion y gall y rhesymeg redeg yn esmwyth.AthroniaethMewn un ystyr, mae hyn hefyd yn ymgais am gywirdeb a threfn.
i grynhoi
Mae tri phwynt allweddol:
- Nid problem resymeg yw'r gwall, ond gofod ysbryd.
- Y datrysiad cywir yw ei ddisodli â gofod hanner lled safonol.
- Datblygwch lendid cod a chadwch draw oddi wrth gymeriadau cudd.
Felly, y tro nesaf y byddwch chi'n dod ar draws gwall sy'n ymddangos yn anesboniadwy, efallai y byddwch chi cystal ag amau: Oes "ysbryd" anweledig wrth y gwaith? Cymerwch gamau, glanhewch nhw, a bydd eich cod yn rhedeg yn esmwyth.
Blog Chen Weiliang Gobeithio ( https://www.chenweiliang.com/ ) wedi rhannu "Gwall cystrawen WordPress: Canllaw perffaith i drwsio llinyn annisgwyl mewn dyfynbris sengl" a allai fod o gymorth i chi.
Croeso i chi rannu dolen yr erthygl hon:https://www.chenweiliang.com/cwl-33245.html
I ddatgloi mwy o driciau cudd🔑, croeso i ymuno â'n sianel Telegram!
Rhannwch a hoffwch os ydych chi'n ei hoffi! Eich cyfrannau a'ch hoff bethau yw ein cymhelliant parhaus!