Gwall cystrawen WordPress: Canllaw perffaith i drwsio llinyn annisgwyl mewn dyfynbris sengl

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.

Gwall cystrawen WordPress: Canllaw perffaith i drwsio llinyn annisgwyl mewn dyfynbris sengl

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.

  1. Defnyddiwch olygydd dibynadwy, fel VS Code, a all amlygu cymeriadau rhyfedd yn awtomatig.
  2. Wrth agor ffeil, ceisiwch ei chadw mewn amgodio UTF-8, a all leihau'r risg o "symbolau ysbryd" i'r hanner.
  3. 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.

发表 评论

Ni fydd eich cyfeiriad e-bost yn cael ei gyhoeddi. 必填 项 已 用 * Label

Sgroliwch i'r brig