wordpressで白い画面になった時、wp-config.phpでWP_DEBUGをtrueにしてエラーを表示することがあります。
その時、wordpressの動作には問題ないエラーが表示されていることがあります。
今日は「Undefined index: author in」が表示されていました。
気になるのでこのエラーを消してやろうと思います。
Undefined index: author in
このエラーは定義されていない変数がある時に出るエラーです。なので、empty()を使用して変数が空かどうか確認することによりエラーは出なくなります。
なぜこのエラーが出たのかいうと、functions.phpをカスタマイズしている部分が原因でした。
wordpressでは投稿者アーカイブからユーザー名が分かってしまうのですね。そうするとauthor値からユーザー名がわかってしまい、判明したログインユーザー名で不正アクセスのセキュリティリスクになるのです。
過去に知り合いの案件でauthor値からログインユーザー名が漏れて、毎日ログイン画面に漏れたユーザー名でログインを試しているlogを見たことがあります。。。
なので、投稿者アーカイブは404「ページが見つかりません」へ遷移するようにfunctions.phpをカスタマイズしていました。
/**
* 投稿者アーカイブなし
*/
add_filter( 'author_rewrite_rules', '__return_empty_array' );
function disable_author_archive() {
if( $_GET['author'] || preg_match('#/author/.+#', $_SERVER['REQUEST_URI']) ){
wp_redirect( home_url( '/404.php' ) );
exit;
}
}
add_action('init', 'disable_author_archive');
このコードの
$_GET[‘author’]
が、エラー箇所でした。その行を、
/**
* 投稿者アーカイブなし
*/
add_filter( 'author_rewrite_rules', '__return_empty_array' );
function disable_author_archive() {
if( !empty($_GET['author']) || preg_match('#/author/.+#', $_SERVER['REQUEST_URI']) ){
wp_redirect( home_url( '/404.php' ) );
exit;
}
}
add_action('init', 'disable_author_archive');
if( !empty($_GET[‘author’])…
として、変数の中身が空か確認する記述を追加するとエラーが出なくなりました。
コメント