【WordPress】警告/エラー対処法|Warning: Undefined array key “post_type” in happy-elementor-addons

wordpress-prograshi(プロぐらし)-kv WordPress
記事内に広告が含まれていることがあります。

WordPressの投稿画面で以下のようなエラー(警告)が表示される状況が発生した場合の対処法をまとめています。

エラー内容

Warning: Undefined array key “post_type” in /home/your-domain.com/public_html/wp-content/plugins/happy-elementor-addons/classes/theme-builder.php on line 184


エラーの発生原因

エラーの発生原因はプラグイン「Happy Elementor Addons」によるもので、「Warning: Undefined array key “post_type”」は存在しない配列のキーにアクセスしたときに出力される警告です。



根本的な解決はできない

このエラーはプラグイン「Happy Elementor Addons」によるものなので、「Happy Elementor Addons」を無効にすることで解決できます。

ですが、それだと「Happy Elementor Addons」の機能を使うことはできません。

また、仮に「Happy Elementor Addons」のコードを改修して、post_typeが未定義にならないようコードを追加することもできます。

$post_type = isset($_GET['post_type']) ? $_GET['post_type'] : '';


しかし、この場合も、プラグインを更新した場合に追加したコードは上書きされて消えてしまいます。



警告を非表示にする

エラーではなく警告なので非表示にする対応をとります。

wp-config.php に以下を追加します。既にWP_DEBUGの記載があり値がtrueの場合はfalseに変更します。

これはログも含めてエラー表示自体を何もしないという状態です。本番環境であれば以下のようにするのが一般的です。

define('WP_DEBUG', false);



より細かく制御したい場合は、エラーを画面に表示せずログファイル「wp-content/debug.log」のみに記録することもできます。


define('WP_DEBUG', true);
define('WP_DEBUG_DISPLAY', false); // 画面にエラーを表示しない
define('WP_DEBUG_LOG', true); // wp-content/debug.log に出力
@ini_set('display_errors', 0);



define(‘WP_DEBUG’, false);で表示が消えない場合

wp-config.phpにdefine(‘WP_DEBUG’, false);を記載しているのに、エラーや警告の表示が消えない場合があります。

この場合原因は以下の2つです。

define(‘WP_DEBUG’, false);で表示が消えない場合
  1. 記述場所が間違っている。
  2. WordPress外で PHP の設定が強制されている


記述場所が間違っている

WP_DEBUGのコードはwp-settings.phprequire_once よりも前に記述してある必要があります。

例えば以下のように記述します。

// wp-config.php の中盤
define( 'WP_DEBUG', false );
define( 'WP_DEBUG_DISPLAY', false );

// この行よりも前に書くこと
require_once( ABSPATH . 'wp-settings.php' );



WordPress外で PHP の設定が強制されている

.htaccess や php.ini に display_errors=On がある場合など、WordPress外で PHP の設定が強制されている可能性があります。

この場合、wp-config.phpに以下を追記します。

@ini_set( 'display_errors', 0 );


ini_set('display_errors', 0);ini_setPHPの設定(php.iniの値)を一時的に変更する関数です。

display_errorsエラーをブラウザに表示するかどうかを制御する設定項目で、値を0(または "Off")にすると、エラーや警告を画面に表示しません


ini_setの冒頭の@は、PHPのエラーメッセージを無効にする演算子です。



まとめ

警告を非表示にするには、wp-configの適切な位置に以下を追記する。

define('WP_DEBUG', false);


それでも警告が消えない場合はphpの設定をいじるコードを追記する。

define('WP_DEBUG', false);
@ini_set( 'display_errors', 0 );


タイトルとURLをコピーしました