当サイトはアフィリエイト広告を利用しています。
WordPressでは、投稿者名や投稿者アーカイブから、管理画面にログインする際に使用する「ユーザー名」を簡単に取得できてしまうため、これらの情報を誰でも閲覧できる状態にしておくのは、セキュリティ上危険です。
そこで今回は、WordPressで投稿者名や投稿者アーカイブを非表示にする方法をご紹介します。
WordPressのユーザー名を守るために非表示にしたほうが良いもの
WordPressのユーザー名を守るために非表示にしたほうが良いものは、以下のとおりです。
- 投稿者名
- 投稿者アーカイブ
- WP RESET APIのユーザー名
- 標準サイトマップの投稿者アーカイブ
投稿者名
通常はユーザー名がそのまま投稿者名となるため、記事に投稿者名を表示している場合は、自らユーザー名をさらけ出していることになります。
投稿者アーカイブ
投稿者アーカイブとは、以下のような投稿者の記事一覧ページのことです。投稿者アーカイブはURLが「/author/ユーザー名」となっているため、アクセスできる状態だとURLからユーザー名を取得されてしまいます。
「そもそもユーザー名がわからなければ投稿者アーカイブにアクセスできないのでは?」と思うかもしれませんが、実は投稿者アーカイブへは「/?author=ユーザーID」からもアクセス可能となっており、このURLでアクセスすると自動的にユーザー名が入ったURLに切り替わってしまいます。ユーザーIDは数字なので、1から順に入力していけば当たります。
WP RESET APIのユーザー名
WP RESET APIとは、WordPress4.7から搭載された、特定のURLにアクセスすることで管理画面にログインせずにWordPressのデータを取得・更新・削除できる機能のことです。
WP RESET APIを利用すると、以下のようなURLにアクセスすることでユーザー名を取得できてしまいます。
- /wp-json/wp/v2/users
- /wp-json/wp/v2/users/ユーザーID
- /?rest_route=/wp/v2/users
標準サイトマップの投稿者アーカイブ
WordPress5.5からは、XMLサイトマップを作成する機能が搭載されており、この機能で作成したサイトマップには投稿者アーカイブが含まれます。
標準サイトマップは「/wp-sitemap.xml」となっており、このサイトマップ内の
「/wp-sitemap-users-1.xml」にアクセスすると、投稿者アーカイブのURLが表示され、そこからユーザー名を取得できます。
WordPressで投稿者名を非表示にする方法
WordPressで投稿者名を非表示にする方法には、以下のようなものがあります。
- ニックネームをブログ上の表示名にする
- CSSをカスタマイズする
方法1:ニックネームをブログ上の表示名にする
「投稿者名は表示したいけど、ユーザー名はバレたくない」という場合は、ニックネームをブログ上の表示名にする方法がおすすめです。
ブログ上の表示名はデフォルトだと「ユーザー名」ですが、「ニックネーム」にすることも可能です。ニックネームをブログ上の表示名にすれば、記事にはニックネームが投稿者名として表示されるため、「投稿者名を表示しつつ、ユーザー名を非表示にする」といったことが可能となります。
ニックネームをブログ上の表示名にする場合は、まずWordPress管理画面の「ユーザー」⇒「プロフィール」をクリックします。
「ニックネーム」に、ユーザー名とは異なる名前を入力し、「ブログ上の表示名」からニックネームを選択します。設定が完了したら一番下までスクロールして「プロフィールを更新」ボタンをクリックしましょう。
これで投稿者名を表示しつつユーザー名を非表示にできます。
方法2:CSSをカスタマイズする
「投稿者名そのものを非表示にしたい」という場合は、CSSをカスタマイズする方法がおすすめです。
CSSをカスタマイズする場合は、まずブラウザで投稿者名が表示されているページを開き、検証ツールで投稿者名のクラス名を特定します。Chromeで検証ツールを表示するには、[Ctrl]+[Shift]+[I]を押します。
検証ツールを表示したら、[Ctrl]+[Shift]+[C]でセレクトモードにした後、投稿名を含むエリアをクリックします。
すると、ソースコードの中から選択したエリアがハイライトされます。ハイライトされている部分のclass属性の値がクラス名です(例の場合は「author-info」)。
クラス名を特定したら、WordPress管理画面の「外観」⇒「テーマファイルエディター」をクリックします。
style.cssの末尾に以下のようなコードを追加して「ファイルを更新」ボタンをクリックします。「クラス名」の部分はさきほど調べたクラス名に置き換えてください。
/* 固定ページの投稿者名を非表示 */
.page .クラス名 {
display: none;
}
/* 投稿の投稿者名を非表示 */
.post .クラス名 {
display: none;
}
これで投稿者名が非表示になります。
CSSの変更が反映されない場合は、以下の記事を参考にしてみてください。
WordPressの投稿者アーカイブを非表示にする方法
WordPressの投稿者アーカイブを非表示にする方法には、以下のようなものがあります。
- プラグインを使う
- functions.phpをカスタマイズする
方法1:プラグインを使う
「SiteGuard WP Plugin」というセキュリティ系のプラグインを使うと、「/?author=ユーザーID」のリダイレクト先を投稿者アーカイブではなくトップページにできます。
プラグインを使う場合は、まず当該プラグインをインストール・有効化します。
プラグインのインストール方法や有効化方法がわからない方は、以下の記事をご覧ください。
WordPress管理画面の「SiteGuard」⇒「ダッシュボード」をクリックします。
「ユーザー名漏えい防御」をクリックします。
「有効」をクリックしたら、一番下までスクロールして「変更を保存」ボタンをクリックしましょう。
これで「/?author=ユーザーID」にアクセスすると投稿者アーカイブではなくトップページが表示されるようになります。
方法2:functions.phpをカスタマイズする
プラグインを使いたくない場合は、functions.phpをカスタマイズしましょう。
functions.phpをカスタマイズする場合は、まずWordPress管理画面の「外観」⇒「テーマファイルエディター」をクリックします。
「テーマファイル」から「functions.php」をクリックし、末尾(?>
がある場合はその上)に以下のコードを追加して「ファイルを更新」ボタンをクリックします。
// 投稿者アーカイブを非表示
add_action('init', 'disable_author_archive_query');
function disable_author_archive_query() {
if (preg_match('/author=([0-9]*)/i', $_SERVER['QUERY_STRING']) && !preg_match('/post_author=/i', $_SERVER['QUERY_STRING'])) {
wp_redirect(home_url());
exit;
}
}
これで「/?author=ユーザーID」にアクセスすると投稿者アーカイブではなくトップページが表示されるようになります。
WP RESET APIのユーザー名を非表示にする方法
WP RESET APIのユーザー名を非表示にする方法には、以下のようなものがあります。
- プラグインを使う
- functions.phpをカスタマイズする
方法1:プラグインを使う
さきほどご紹介したプラグイン「SiteGuard WP Plugin」を使うと、「/wp-json/wp/v2/users」「/wp-json/wp/v2/users/ユーザーID」「/?rest_route=/wp/v2/users」にアクセスしたときの内容をユーザー名のないものに変更できます。
プラグインを使う場合は、「ユーザー名漏えい防御」画面で「RESER API無効化」にチェックを付け、一番下までスクロールして「変更を保存」ボタンをクリックします。
これで「/wp-json/wp/v2/users」「/wp-json/wp/v2/users/ユーザーID」「/?rest_route=/wp/v2/users」にアクセスしてもユーザー名が表示されなくなります。
方法2:functions.phpをカスタマイズする
プラグインを使いたくない場合は、functions.phpをカスタマイズしましょう。
functions.phpをカスタマイズする場合は、functions.phpに以下のコードを追加して「ファイルを更新」ボタンをクリックします。
// WP RESET APIのユーザー名を非表示
function disable_rest_endpoints($endpoints) {
if (isset($endpoints['/wp/v2/users'])) {
unset($endpoints['/wp/v2/users']);
}
if (isset($endpoints['/wp/v2/users/(?P<id>[\d]+)'])) {
unset($endpoints['/wp/v2/users/(?P<id>[\d]+)']);
}
return $endpoints;
}
add_filter('rest_endpoints', 'disable_rest_endpoints');
これで「/wp-json/wp/v2/users」「/wp-json/wp/v2/users/ユーザーID」「/?rest_route=/wp/v2/users」にアクセスしてもユーザー名が表示されなくなります。
WordPressの標準サイトマップの投稿者アーカイブを非表示にする方法
WordPressの標準サイトマップの投稿者アーカイブを非表示にするには、functions.phpをカスタマイズします。
functions.phpに以下のコードを追加して「ファイルを更新」ボタンをクリックしましょう。
// 標準サイトマップの投稿者アーカイブを非表示
add_filter('wp_sitemaps_add_provider', 'disable_author_sitemap', 10, 2);
function disable_author_sitemap($provider, $name) {
if ('users' === $name) {
return false;
}
return $provider;
}
これで標準サイトマップに「/wp-sitemap-users-1.xml」が表示されなくなります。
WordPressの投稿者情報はテーマの機能で非表示にできる場合も
WordPressの投稿者情報は、テーマの機能で非表示にできる場合もあります。
たとえば「Cocoon」の投稿者名は、WordPress管理画面の「Cocoon設定」⇒「本文」⇒「投稿者名の表示」のチェックを外して「変更をまとめて保存」ボタンをクリックすると非表示にできます。
「yStandard」の標準サイトマップの投稿者アーカイブは、WordPress管理画面の「外観」⇒「カスタマイズ」⇒「XMLサイトマップ」⇒「投稿者別サイトマップを作成する」のチェックを外して「公開」ボタンをクリックすると非表示にできます。
今回ご紹介した方法で非表示にできない場合は、テーマの機能で非表示にできないか、「テーマ名 投稿者名 非表示」などのキーワードで検索してみましょう。
まとめ
今回は、WordPressで投稿者名や投稿者アーカイブを非表示にする方法をご紹介しました。
投稿者名は、ニックネームをブログ上の表示名にするか、CSSをカスタマイズすることで非表示にできます。投稿者アーカイブを非表示にしたい場合は、プラグイン「SiteGuard WP Plugin」を使うか、functions.phpをカスタマイズしましょう。
ユーザー名を守るには、WP RESET APIのユーザー名や、標準サイトマップの投稿者アーカイブも非表示にする必要があります。表示されている場合は、今回ご紹介した方法で非表示にしてみてくださいね。