WordPress のユーザー名を見えなくする

URL アドレスの最後に /?author=1 を付けてアクセスすると、投稿者アーカイブページというものが表示される。
このページの URL の最後がユーザー名になっている。
「1」ではエラーが返ってくる場合も、数字を「2」「3」と増やしながら何度も入力していけば、そのうちヒットしてしまう。

  • なぜマズイのか?

セキュリティのため、ユーザー名に「admin」を使うのはマズイとかいう理由で「admin」以外のユーザー名を設定していても、上記の方法を使えばばれてしまい、意味をなさなくなる。

  • 対策

投稿者アーカイブページを使えなくすればいい
(対策1.2どちらかを行えばOK)

対策1 functions.phpに以下のコードを追記する。

//投稿アーカイブ非表示
add_filter( 'manage_posts_columns', 'manage_posts_columns' );
add_action( 'manage_posts_custom_column', 'add_column', 10, 2 );

function theme_slug_redirect_author_archive() {
if (is_author() ) {
wp_redirect( home_url());
exit;
}
}
add_action( 'template_redirect', 'theme_slug_redirect_author_archive' );

対策2 author.phpに以下のコードを追記する。(ない場合は新規にファイルを作成)

add_filter( 'author_rewrite_rules', '__return_empty_array' );