Nezachytená chyba WordPress: Volanie riešenia nedefinovanej funkcie create_function().

Boli ste tiež?WordPresschybové hlásenie"Uncaught Error: Call to undefined function create_function() in SNIPPET:62"Vzhľadom na bolesť hlavy?"

Tento problém v skutočnosti nie je ťažké vyriešiť, povedzme si teraz podrobne o tom, prečo sa tento problém vyskytuje a ako ho vyriešiť pomocou jednoduchého a efektívneho kódu.

Prečo sa mi zobrazujú chyby create_function?

Najprv trochu vedomostí. V PHP 7.2,create_function()Bola zastaraná a v PHP 8.0 bola táto funkcia priamo odstránená. Inými slovami, ak bol váš server inovovaný na PHP 7.2 alebo vyšší a stále používa starý kód, tento problém sa vyskytne.

Ale jadro problemu je:create_functionJe to produkt starej doby. Problém s ním nie je len v tom, že už nie je podporovaný, ale prináša aj slabý výkon a potenciálne bezpečnostné riziká. Novým riešením je použiťanonymná funkcia(Anonymné funkcie).

Upravte kód: Vyriešte chybu create_function

Nezachytená chyba WordPress: Volanie riešenia nedefinovanej funkcie create_function().

Teraz sa pozrime, ako nahradiť starý kód. Nasleduje konkrétny plán úpravy kódu:

pôvodný kód

//彻底禁止WordPress缩略图
add_filter( 'add_image_size', create_function( '', 'return 1;' ) );

//自定义登录页面的LOGO链接为首页链接
add_filter('login_headerurl', create_function(false,"return get_bloginfo('url');"));

Upravený kód

// 彻底禁止 WordPress 缩略图
add_filter( 'add_image_size', function() { return 1; } );

// 自定义登录页面的 LOGO 链接为首页链接
add_filter( 'login_headerurl', function() { return get_bloginfo('url'); } );

Vysvetlenie kódu:

  • function() { return 1; } je anonymná funkcia, ktorá nevyžaduje žiadne parametre a vracia 1.
  • get_bloginfo('url') Je to funkcia, ktorá vracia adresu domovskej stránky webu. Obalíme ju aj anonymnou funkciou.

Lepší prístup: s deaktiváciou miniatúr zaobchádzajte opatrne

Úplné vypnutie miniatúr WordPress niekedy nie je tou najlepšou voľbou. Ak niektoré témy alebo doplnky vyžadujú obrázky určitej veľkosti, ich úplné vypnutie môže spôsobiť neočakávané problémy.

Tu je flexibilnejšie riešenie: selektívne deaktivujte nepotrebné veľkosti obrázkov pomocou filtrov.

Vzorový kód

add_filter( 'intermediate_image_sizes_advanced', function( $sizes ) {
    unset( $sizes['thumbnail'] ); // 禁用缩略图
    unset( $sizes['medium'] );    // 禁用中等大小
    unset( $sizes['large'] );     // 禁用大图
    return $sizes;
} );

Tento prístup nielenže rieši problém, ale tiež zachováva kompatibilitu s určitými funkciami.

Upraviť kód

Pridajte upravený kód do jedného z nasledujúcich umiestnení:

  1. aktuálnej témy functions.php dokument.
  2. Doplnok vlastnej funkcie (odporúčaná metóda, aby sa zabránilo pokrytiu kódu aktualizáciami tém).

Čo mám robiť, ak chyba pretrváva aj po úprave kódu?

Ak je povolený doplnok na ukladanie plynulých úryvkov a po úprave sa stále vyskytujú chyby, môže byť influent-snippet-storage/index.phpJe v ňom vyrovnávacia pamäť a je potrebné odstrániť chybový kód error_files.

zdvihnúť sawp-content/fluent-snippet-storage/index.phpSúbor, prejdite nadol na koniec a nájdite kód podobný nasledujúcemu:

'error_files' => 
array (
'1-e7a7bbe999a4wordpresse5a4b4e983a8e697a0e794a8e4bfa1e681af.php' => 'Uncaught Error: Call to undefined function create_function() in SNIPPET:62',
),
);

Kód na odstránenie týchto chybových záznamov:

'1-e7a7bbe999a4wordpresse5a4b4e983a8e697a0e794a8e4bfa1e681af.php' => 'Uncaught Error: Call to undefined function create_function() in SNIPPET:62',

Bonusový tip: Zabezpečte kompatibilitu kódu

Pred úpravou kódu sa odporúča zálohovať súbory a databázu webovej stránky. Zásuvné moduly (napríklad UpdraftPlus) môžete použiť na rýchle dokončenie zálohovania a vyhnúť sa zaskočenia, keď sa niečo pokazí.

Zároveň, ak nie ste oboznámení s PHP, odporúča sa pokúsiť sa upraviť kód v testovacom prostredí a nie priamo prevádzkovať produkčné prostredie.

Optimalizácia kódu je neustály boj

Táto otázka sa zdá byť jednoduchá, ale v skutočnosti ide o bežný problém, ktorému je potrebné pri vývoji webových stránok čeliť:Kompatibilita starého kódu s novým prostredím. Či už ide o upgrade verzie PHP alebo vylepšenie funkcií WordPress, všetky sú navrhnuté tak, aby web fungoval efektívnejšie a bezpečnejšie.

Pre vývojárov je nevyhnutné aktualizovať kód včas a naučiť sa nové technológie. Anonymné funkcie nielen robia kód stručnejším, ale tiež zlepšujú výkon a znižujú potenciálne bezpečnostné riziká. Každá optimalizácia posunie váš web o krok ďalej.

总结

  1. create_function() V PHP 7.2 a novších už nie je podporovaný a namiesto toho sa odporúča používať anonymné funkcie.
  2. Po úprave kódu bude váš web efektívnejší a bezpečnejší.
  3. Pre lepšiu kompatibilitu s doplnkami a témami môže byť lepším riešením selektívne zakázanie veľkostí obrázkov.
  4. Optimalizácia kódu nie je len o oprave problémov, ale aj krokom k zlepšeniu kvality vášho webu.

Ak ste sa stretli s podobnými problémami, možno budete chcieť vyskúšať riešenia v tomto článku.

发表 评论

Vaša emailová adresa nebude zverejnená. 必填 项 已 用 * Štítok

Adresár článkov
Prejdite na začiatok