私はクライアントが同様にアクセスできるサーバー上のサイトを開発しています、そして私がしたいのは管理者のためだけにWP_DEBUG
を見せることです。 Yoastの記事 を参照してください。
if ( isset($_GET['debug']) && $_GET['debug'] == 'true')
define('WP_DEBUG', true);
WP_DEBUG
のように?debug=true
が付いているURLに対してのみhttp://domain.com/?debug=true
を表示します。
Debug Bar はデフォルトでこの情報の一部をそこに保持すると考えていました(WP_DEBUG
がオンになっているかどうかは関係ありません)。
だから、私が有用だと思っていたのは、現在のユーザーをチェックすること(manage_options
機能を持っていて、それから add_query_arg()
を通してリンクを走らせることです):
function zs_admin_debug() {
if (!current_user_can('manage_options')) {
add_query_arg('debug','true');
}
}
しかし、私がよくわからないのは - これを使ってサイト上のすべてのリンクを有効にするために使用できるフックはありますか?このように、管理者は私が非常に役に立つだろうと思ったデバッグをいつも見ます。いつものように助けてくれてありがとう!
私は普遍的なURLフックがあるとは思わない。たくさんのフックがあり、私はそれを逃したかもしれませんが、私はそれがあるとは思いません。あなたは adambrown.info でフックを通して見ることができます。 URLフックはたくさんありますが、普遍的なフックはありません。
私が他の解決策を提案するかもしれないならば:ファイルにエラーを記録する。
/**
* This will log all errors notices and warnings to a file called debug.log in
* wp-content (if Apache does not have write permission, you may need to create
* the file first and set the appropriate permissions (i.e. use 666) )
*/
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors',0);
そのコードは、 wp-config.phpファイルのCodex からそのままです。そうしておけば、$_GET
を動かしたり、誰が管理者ではなく誰が管理者ではないかを整理したりする必要はありません。
編集:
1つの解決策を忘れました。 Javascriptを使ってこれを行うことができます。短いスクリプトを使用すると、ページ上のすべてのURLにパラメータを追加できます。管理者専用のスクリプトを簡単に読み込むことができます。
みんなのためのエラーが記録されているので私はまだ「ログ」の解決策を提案したいと思います。あなたの人々が私のようで、「あなたがそのフォームを実行するとサイトは壊れています」のようなエラーの 'レポート'を送ってきた人はログに感謝します。 :)
私の最初のアプローチはゴミ箱のためのものであり、s_ha_dumsの答えはきれいで、おそらくそれを導く最良の方法ですが、もう1つ実用的なシナリオを提示しましょう。
次の例では、管理者がシステムにログインしてから24時間(86400秒)有効なCookieを設定しています。 wp-config.php では、定数WP_DEBUG
はクッキーの存在と値に応じて条件付きで定義されます。
警告:同じマシンの同じブラウザから同じ日にログインすると、WP_DEBUG
はtrue
に設定されます。
functions.php (またはプラグインとして):
function wpse_69549_admin_debug( $user_login, $user )
{
if ( in_array( 'administrator', $user->roles ) ) {
setcookie( 'wp_debug', 'on', time() + 86400, '/', get_site_option( 'siteurl' ) );
}
}
add_action( 'wp_login', 'wpse_69549_admin_debug', 10, 2 );
参照してください: コーデックス>アクションリファレンス> wp_login
wp-config.php :
if ( isset( $_COOKIE['wp_debug'] ) && 'on' === $_COOKIE['wp_debug'] ) {
define( 'WP_DEBUG', true );
} else {
define( 'WP_DEBUG', false );
}
それはあなたの質問に正確には答えません、しかし個人的な経験から私はURLの代わりにIPアドレスを一致させることによってデバッグモードを有効にすることがより良いことがわかりました。
これはリンクの修正を必要とし、WPが必要なユーザー機能をロードする前にadminを識別する方法を解決します。
これもトリックの可能性がありますが、wp-config.php
はそこで定義されているので、これをWP_DEBUG
に入れる必要があります。
if ( isset( $_GET['debugsecret'] ) && 'debugsecret' == $_GET['debugsecret'] ) {
define( 'WP_DEBUG', true );
}
デバッグしたいページのURLに?debugsecret=debugsecret
を追加します。
静的IPがある場合は、次のようにします。
if ('YOUR_IP_ADDRESS' == $_SERVER['REMOTE_ADDR']) {
define('WP_DEBUG', true);
} else {
define('WP_DEBUG', false);
}