Error de sintaxi de WordPress: una guia perfecta per solucionar una cadena entre cometes simples inesperada

WordPress Els errors de PHP poden ser causats per espais fantasma!

El que més temen els programadors no són els errors, sinó que els errors juguin amb les seves emocions.

La lògica que has escrit està bé, òbviament, però PHP et dóna un syntax errorÉs com si arribessis tres minuts tard a una cita i l'altra persona girés la cara i digués "no m'estimes". Et sents tan injustificat que voldries llençar el teclat.

Error de sintaxi de WordPress: una guia perfecta per solucionar una cadena entre cometes simples inesperada

Per què WordPress PHP informa d'un error?

L'indicació que dóna PHP és:

syntax error, unexpected single-quoted string "wpturbo_handle_upload_convert_...", expecting ")"

Traduït al llenguatge humà, vol dir: esperava un parèntesi de tancament, però m'has ficat una estranya cadena de caràcters, amb un temperament inexplicable.

Aleshores, quin és el problema? No és la lògica de la teva funció, sinó aquella línia aparentment innocent:

add_filter('wp_handle_upload', 'wpturbo_handle_upload_convert_to_webp');

Espais fantasma en codi

El nucli del problema és que quan copies i enganxes el codi, barreges espai d'amplada completa o Espai d'amplada zero.

Aquestes coses són invisibles a simple vista a l'editor, però tornaran boig PHP quan s'analitzin.

És com menjar-se un bol de fideus deliciosos, però de sobte mossegueix un gra de sorra i les seves defenses es trenquen a l'instant. Així és com se sent PHP en aquest moment.

Quina és la manera correcta d'escriure-ho?

El que heu de fer és realment molt senzill. Substituïu tots aquests espais fantasma i mantingueu els espais de mitja amplada més purs.

El codi correcte de WordPress és el següent:

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;
}

Com evitar això?

Potser us preguntareu, heu d'estar nerviosos cada vegada que copieu i enganxeu? La resposta és: no us espanteu, però sigueu intel·ligents.

  1. Feu servir un editor fiable, com ara VS Code, que pugui ressaltar automàticament els caràcters estranys.
  2. Quan obriu un fitxer, proveu de desar-lo amb la codificació UTF-8, que pot reduir a la meitat el risc de "símbols fantasma".
  3. Si realment esteu preocupats, enganxeu el codi sospitós en una eina de text pla i netegeu-lo.

Igual que rentar les verdures abans de menjar un estofat, es poden evitar molts accidents.

Conclusió

Aquest error pot semblar misteriós, però la seva lògica és en realitat molt clara. Programar és com escriure poesia; la puntuació i l'espaiat són l'ànima del ritme. Un sol espai incorrecte pot desfer el codi del ritme, com una tuba desafinada que apareix de sobte en una orquestra.

Quan escrivim codi, hem de desenvolupar una mena de "netesa de símbols". Només aconseguint la perfecció en els detalls la lògica pot funcionar sense problemes.FilosofiaEn cert sentit, això també és una recerca de precisió i ordre.

总结

Hi ha tres punts clau:

  • L'error no és un problema de lògica, sinó un espai fantasma.
  • La solució correcta és substituir-lo per un espai estàndard de mitja amplada.
  • Desenvolupa la netedat del codi i mantén-te allunyat dels caràcters ocults.

Així doncs, la propera vegada que us trobeu amb un error aparentment inexplicable, és millor sospitar: hi ha un "fantasma" invisible en funcionament? Preneu mesures, netegeu-los i el vostre codi funcionarà sense problemes.

发表 评论

La teva adreça de correu electrònic no es publicarà. S'utilitzen els camps obligatoris * 标注

Tornar a dalt