WordPress Uncaught Error: Oproep na ongedefinieerde funksie create_function() oplossing

Was jy ookWordPressfoutboodskap"Uncaught Error: Call to undefined function create_function() in SNIPPET:62"Hoofpyn gegee?"

Hierdie probleem is eintlik nie moeilik om op te los nie Kom ons praat nou in detail oor hoekom hierdie probleem voorkom en hoe om dit met eenvoudige en effektiewe kode op te los.

Hoekom kry ek create_function foute?

Eers bietjie agtergrondkennis. In PHP 7.2,create_function()Dit is afgekeur, en in PHP 8.0 is hierdie funksie direk verwyder. Met ander woorde, as jou bediener opgegradeer is na PHP 7.2 of hoër en steeds ou kode gebruik, sal hierdie probleem voorkom.

Maar die kern van die probleem is:create_functionDit is 'n produk van 'n ou era. Die probleem daarmee is nie net dat dit nie meer ondersteun word nie, maar dit stel ook swak werkverrigting en potensiële sekuriteitsrisiko's in. Die nuwe oplossing is om te gebruikanonieme funksie(Anonieme funksies).

Verander die kode: Los die create_function fout op

WordPress Uncaught Error: Oproep na ongedefinieerde funksie create_function() oplossing

Kom ons kyk nou hoe om die ou kode te vervang. Die volgende is die spesifieke kodewysigingsplan:

oorspronklike kode

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

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

Gewysigde kode

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

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

Kode verduideliking:

  • function() { return 1; } is 'n anonieme funksie wat geen parameters en opbrengste vereis nie 1.
  • get_bloginfo('url') Dit is 'n funksie wat die tuisbladadres van die webwerf terugstuur. Ons wikkel dit ook met 'n anonieme funksie.

Beter benadering: behandel duimnael-deaktivering met omsigtigheid

Om WordPress-kleinkiekies heeltemal uit te skakel is soms nie die beste opsie nie. As sekere temas of inproppe beelde van 'n spesifieke grootte vereis, kan dit onverwagte probleme veroorsaak om dit heeltemal uit te skakel.

Hier is 'n meer buigsame oplossing: deaktiveer onnodige beeldgroottes selektief via filters.

Voorbeeld kode

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

Hierdie benadering los nie net die probleem op nie, maar behou ook verenigbaarheid met sekere kenmerke.

Wysig kode

Voeg die gewysigde kode by een van die volgende liggings:

  1. van huidige onderwerp functions.php lêer.
  2. Pasgemaakte funksie-inprop (aanbevole metode om kodedekking deur tema-opdaterings te vermy).

Wat moet ek doen as die fout steeds voorkom nadat ek die kode gewysig het?

As die fluent-snippet-berging-inprop geaktiveer is en daar is steeds foute na wysiging, kan dit influent-snippet-storage/index.phpDaar is 'n kas daarin, en die foutkode van error_files moet uitgevee word.

opdaagwp-content/fluent-snippet-storage/index.phpLêer, blaai af tot aan die einde en vind kode soortgelyk aan die volgende:

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

Kode om hierdie foutrekords uit te vee:

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

Bonuswenk: Verseker kodeversoenbaarheid

Voordat u die kode wysig, word dit aanbeveel om die webwerflêers en databasis te rugsteun. Jy kan inproppe (soos UpdraftPlus) gebruik om vinnig rugsteun te voltooi en te voorkom dat jy onkant betrap word wanneer iets verkeerd loop.

Terselfdertyd, as jy nie vertroud is met PHP nie, word dit aanbeveel om die kode in die toetsomgewing te wysig eerder as om die produksie-omgewing direk te bedryf.

Die optimalisering van kode is 'n konstante stryd

Hierdie vraag lyk eenvoudig, maar dit is eintlik 'n algemene probleem wat in die gesig gestaar moet word in webwerf-ontwikkeling:Verenigbaarheid van ou kode met nuwe omgewing. Of dit nou die opgradering van die PHP-weergawe of die verbetering van WordPress-funksies is, hulle is almal ontwerp om die webwerf doeltreffender en veiliger te laat loop.

Vir ontwikkelaars is dit noodsaaklik om kode betyds op te dateer en nuwe tegnologie te leer. Anonieme funksies maak nie net kode meer bondig nie, maar verbeter ook werkverrigting en verminder potensiële sekuriteitsrisiko's. Elke optimalisering neem jou webwerf 'n stap verder.

opsomming

  1. create_function() Dit word nie meer in PHP 7.2 en hoër ondersteun nie, en dit word aanbeveel om eerder anonieme funksies te gebruik.
  2. Nadat u die kode gewysig het, sal u webwerf doeltreffender en veiliger wees.
  3. Vir beter versoenbaarheid met plugins en temas, kan die selektiewe deaktivering van beeldgroottes 'n beter oplossing wees.
  4. Die optimalisering van kode gaan nie net oor die oplossing van probleme nie, maar ook 'n stap in die rigting van die verbetering van die kwaliteit van jou webwerf.

As jy soortgelyke probleme teëgekom het, wil jy dalk die oplossings in hierdie artikel probeer.

发表 评论

Jou e-posadres sal nie gepubliseer word nie. Vereiste velde word gebruik * Etiket

Artikelgids
Scroll na bo