Ralat Tidak Ditangkap WordPress: Panggilan ke penyelesaian create_function() fungsi yang tidak ditentukan

Adakah anda juga pernahWordPressmesej ralat"Uncaught Error: Call to undefined function create_function() in SNIPPET:62"Diberi sakit kepala?"

Masalah ini sebenarnya tidak sukar untuk diselesaikan Mari kita bincangkan secara terperinci sekarang tentang mengapa masalah ini berlaku dan cara menyelesaikannya dengan kod yang mudah dan berkesan.

Mengapa saya mendapat ralat create_function?

Sedikit pengetahuan latar belakang dahulu. Dalam PHP 7.2,create_function()Ia telah ditamatkan, dan dalam PHP 8.0, fungsi ini telah dialih keluar secara langsung. Dengan kata lain, jika pelayan anda telah dinaik taraf kepada PHP 7.2 ke atas dan masih menggunakan kod lama, masalah ini akan berlaku.

Tetapi inti masalahnya ialah:create_functionIa adalah produk era lama. Masalahnya bukan sahaja ia tidak lagi disokong, tetapi ia juga memperkenalkan prestasi yang lemah dan potensi risiko keselamatan. Penyelesaian baru ialah menggunakanfungsi tanpa nama(Fungsi Tanpa Nama).

Ubah suai kod: Selesaikan ralat create_function

Ralat Tidak Ditangkap WordPress: Panggilan ke penyelesaian create_function() fungsi yang tidak ditentukan

Sekarang, mari kita lihat bagaimana untuk menggantikan kod lama. Berikut ialah pelan pengubahsuaian kod khusus:

kod asal

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

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

Kod yang diubah suai

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

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

Penjelasan kod:

  • function() { return 1; } ialah fungsi tanpa nama yang tidak memerlukan parameter dan pulangan 1.
  • get_bloginfo('url') Ia adalah fungsi yang mengembalikan alamat halaman utama tapak web Kami juga membungkusnya dengan fungsi tanpa nama.

Pendekatan yang lebih baik: rawat kelumpuhan lakaran kenit dengan berhati-hati

Melumpuhkan lakaran kecil WordPress sepenuhnya kadangkala bukan pilihan terbaik. Jika tema atau pemalam tertentu memerlukan imej dengan saiz tertentu, melumpuhkannya sepenuhnya boleh menyebabkan masalah yang tidak dijangka.

Berikut ialah penyelesaian yang lebih fleksibel: lumpuhkan secara terpilih saiz imej yang tidak diperlukan melalui penapis.

Kod contoh

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

Pendekatan ini bukan sahaja menyelesaikan masalah, tetapi juga mengekalkan keserasian dengan ciri-ciri tertentu.

Ubah suai kod

Tambahkan kod yang diubah suai pada salah satu lokasi berikut:

  1. topik semasa functions.php fail.
  2. Pemalam fungsi tersuai (kaedah yang disyorkan untuk mengelakkan liputan kod oleh kemas kini tema).

Apakah yang perlu saya lakukan jika ralat masih berlaku selepas mengubah suai kod?

Jika pemalam storan coretan-fasih didayakan dan masih terdapat ralat selepas pengubahsuaian, ia mungkin berada dalamfluent-snippet-storage/index.phpTerdapat cache di dalamnya, dan kod ralat error_files perlu dipadamkan.

hadirwp-content/fluent-snippet-storage/index.phpFail, tatal ke bawah hingga akhir, dan cari kod yang serupa dengan yang berikut:

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

Kod untuk memadam rekod ralat ini:

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

Petua bonus: Pastikan keserasian kod

Sebelum mengubah suai kod, adalah disyorkan untuk membuat sandaran fail tapak web dan pangkalan data. Anda boleh menggunakan pemalam (seperti UpdraftPlus) untuk melengkapkan sandaran dengan cepat dan mengelakkan diri daripada terperangkap apabila berlaku masalah.

Pada masa yang sama, jika anda tidak biasa dengan PHP, adalah disyorkan untuk mencuba mengubah suai kod dalam persekitaran ujian dan bukannya mengendalikan secara langsung persekitaran pengeluaran.

Mengoptimumkan kod adalah pertempuran yang berterusan

Soalan ini kelihatan mudah, tetapi ia sebenarnya adalah masalah biasa yang perlu dihadapi dalam pembangunan laman web:Keserasian kod lama dengan persekitaran baharu. Sama ada peningkatan versi PHP atau penambahbaikan fungsi WordPress, semuanya direka untuk menjadikan tapak web berjalan dengan lebih cekap dan selamat.

Bagi pembangun, adalah penting untuk mengemas kini kod tepat pada masanya dan mempelajari teknologi baharu. Fungsi tanpa nama bukan sahaja menjadikan kod lebih ringkas, tetapi juga meningkatkan prestasi dan mengurangkan potensi risiko keselamatan. Setiap pengoptimuman membawa tapak web anda selangkah lebih jauh.

总结

  1. create_function() Ia tidak lagi disokong dalam PHP 7.2 dan ke atas, dan disyorkan untuk menggunakan fungsi tanpa nama.
  2. Selepas mengubah suai kod, tapak web anda akan menjadi lebih cekap dan selamat.
  3. Untuk keserasian yang lebih baik dengan pemalam dan tema, melumpuhkan saiz imej secara selektif mungkin merupakan penyelesaian yang lebih baik.
  4. Mengoptimumkan kod bukan sahaja mengenai menyelesaikan masalah, tetapi juga satu langkah ke arah meningkatkan kualiti tapak web anda.

Jika anda menghadapi masalah yang sama, anda mungkin ingin mencuba penyelesaian dalam artikel ini.

发表 评论

Alamat e-mel anda tidak akan diterbitkan. 必填 项 已 用 * 标注

Direktori Artikel
Tatal ke