記事ディレクトリ
あなたも行ったことがありますかWordPressエラーメッセージ」Uncaught Error: Call to undefined function create_function() in SNIPPET:62「頭が痛かったのですが?」
この問題を解決するのは実際には難しくありません。この問題が発生する理由と、シンプルで効果的なコードで解決する方法について詳しく説明します。
create_function エラーが発生するのはなぜですか?
最初に少し背景知識を。 PHP 7.2では、create_function()これは非推奨となり、PHP 8.0 ではこの関数は直接削除されました。つまり、サーバーが PHP 7.2 以降にアップグレードされていても古いコードを使用している場合、この問題が発生します。
しかし、問題の核心は次のとおりです。create_function古い時代の製品です。問題は、サポートされなくなっただけでなく、パフォーマンスの低下と潜在的なセキュリティ リスクも引き起こすことです。新しい解決策は次のとおりです無名関数(匿名関数)。
コードを変更します。create_function エラーを解決します。

次に、古いコードを置き換える方法を見てみましょう。具体的なコード変更計画は次のとおりです。
オリジナルコード
//彻底禁止WordPress缩略图
add_filter( 'add_image_size', create_function( '', 'return 1;' ) );
//自定义登录页面的LOGO链接为首页链接
add_filter('login_headerurl', create_function(false,"return get_bloginfo('url');"));
変更されたコード
// 彻底禁止 WordPress 缩略图
add_filter( 'add_image_size', function() { return 1; } );
// 自定义登录页面的 LOGO 链接为首页链接
add_filter( 'login_headerurl', function() { return get_bloginfo('url'); } );
コードの説明:
function() { return 1; }パラメータを必要とせずに戻り値を返す匿名関数です。1。get_bloginfo('url')Webサイトのホームページアドレスを返す関数ですが、これも匿名関数でラップしています。
より良いアプローチ: サムネイルの無効化には注意が必要です
WordPress サムネイルを完全に無効にすることが最善の選択肢ではない場合があります。特定のテーマまたはプラグインで特定のサイズの画像が必要な場合、それらを完全に無効にすると予期しない問題が発生する可能性があります。
これはより柔軟な解決策です。フィルターを使用して不要な画像サイズを選択的に無効にします。
サンプルコード
add_filter( 'intermediate_image_sizes_advanced', function( $sizes ) {
unset( $sizes['thumbnail'] ); // 禁用缩略图
unset( $sizes['medium'] ); // 禁用中等大小
unset( $sizes['large'] ); // 禁用大图
return $sizes;
} );
このアプローチは問題を解決するだけでなく、特定の機能との互換性も維持します。
コードを変更する
変更したコードを次のいずれかの場所に追加します。
- 現在の話題の
functions.php文書。 - カスタム関数プラグイン (テーマの更新によるコード カバレッジを回避するための推奨方法)。
コードを変更した後もエラーが発生する場合はどうすればよいですか?
Fluent-snippet-storage プラグインが有効になっており、変更後もエラーが発生する場合は、fluent-snippet-storage/index.phpキャッシュが存在するため、error_files のエラーコードを削除する必要があります。
見つけますwp-content/fluent-snippet-storage/index.phpファイルを開き、最後まで下にスクロールして、次のようなコードを見つけます。
'error_files' => array ( '1-e7a7bbe999a4wordpresse5a4b4e983a8e697a0e794a8e4bfa1e681af.php' => 'Uncaught Error: Call to undefined function create_function() in SNIPPET:62', ), );
これらのエラー レコードを削除するコード:
'1-e7a7bbe999a4wordpresse5a4b4e983a8e697a0e794a8e4bfa1e681af.php' => 'Uncaught Error: Call to undefined function create_function() in SNIPPET:62',
おまけのヒント: コードの互換性を確保する
コードを変更する前に、Web サイトのファイルとデータベースをバックアップすることをお勧めします。プラグイン (UpdraftPlus など) を使用すると、バックアップを迅速に完了し、何か問題が発生したときに不意を突かれることを避けることができます。
同時に、PHP に慣れていない場合は、本番環境を直接操作するのではなく、テスト環境でコードを変更してみることをお勧めします。
コードの最適化は絶え間ない戦いです
一見単純に見えるこの問題は、実はウェブサイト開発においてよくある課題です。それは、古いコードと新しい環境との互換性の問題です。PHPのバージョンアップであれ、WordPressの機能改善であれ、目標はウェブサイトをより効率的かつ安全に動作させることです。
開発者にとって、コードをタイムリーに更新し、新しいテクノロジーを学習することは不可欠です。匿名関数はコードをより簡潔にするだけでなく、パフォーマンスを向上させ、潜在的なセキュリティ リスクを軽減します。最適化するたびに、Web サイトがさらに一歩前進します。
サマリー
create_function()PHP 7.2 以降ではサポートされなくなったため、代わりに匿名関数を使用することをお勧めします。- コードを変更すると、Web サイトの効率と安全性が向上します。
- プラグインやテーマとの互換性を高めるには、画像サイズを選択的に無効にする方が良い解決策となる可能性があります。
- コードの最適化は、問題を解決するだけでなく、Web サイトの品質を向上させるための一歩でもあります。
同様の問題が発生した場合は、この記事の解決策を試してみてください。
Chen Weiliang氏のブログ(https://www.chenweiliang.com/ )で共有されている「WordPress Uncaught Error: Call to undefined function create_function()」の解決策が、皆様のお役に立てば幸いです。
この記事のリンクはご自由に共有してください:https://www.chenweiliang.com/cwl-32407.html
