WordPressの構築されたサイトで修正作業などをおこなう場合、テスト環境が用意されていなかったり、簡単な作業であれば本番環境でささっと作業しちゃいたい事ってありませんか?
if(is_user_logged_in()){
//ログインユーザーにのみ表示
}
上記の「is_user_logged_in()」関数使ってログインユーザーにのみ分岐し作業をする方法などが有名ですが、さらにエラー表示も確認したい事があるかと思います。
今回はそんな時に簡単に本番環境でもWordPressのエラーを表示しながら作業をする方法をご紹介いたします。
まずはWordPressのエラーの表示・非表示を切り替える方法
ルートディレクトリにある、「wp-config.php」の85行目辺りに
define('WP_DEBUG', false);
があり、この「false」の部分を「true」に変えてやると、WordPressでエラーを表示してくれるようになります。
define('WP_DEBUG', true);
がしかし、これだけだと本番環境では使いづらい
テスト環境であれば、ガンガンエラーを吐き出してくれても、問題ないのですが、本番環境だとそういう訳にはいきませんよね。
ましてや思いもよらぬエラーが出力されてた日には、、、(こっそり修正しましょう)
試しに「wp-config.php」内で「is_user_logged_in()」関数を使って条件分岐してみましたが、案の定使えませんでした、、、w
なんとかユーザーにばれず、エラーを表示する方法はないのか?
色々ググってみたのですが、ログファイルを出力する方法などは出てくるのですが、意外とその手の記事が見つからず、、、
「わざわざログファイルを出力するのもなぁ」
なんて考えている時に思いついたのが下記の記述。
if(!empty($_GET['debug'])){
define('WP_DEBUG', true);
}else{
define('WP_DEBUG', false);
}
あとは、URLの後に「?debug」をつけるだけで、簡単にユーザーにばれずにエラーを出力する事ができます。
例)https://jiguma.com?debug
他にも、固定IPであればIPアドレスで分岐など応用はいくらでも効くのではと思います。
あとがき
最終的に思いついたのがGET値で条件分岐という、超シンプルな方法でした。
WordPressなだけに、「対応できる関数があるのでは?」と変に勘ぐってしまい、30分くらい試行錯誤してしまいました。
GET値で切り替えているだけなので、特に大きな問題は無いかとは思いますが、念のために作業後は元に戻しておきましょう。