【8/6まで】エックスサーバーで半額キャッシュバックキャンペーン実施中

WordPressで投稿者名や投稿者アーカイブを非表示にする方法

WordPressで投稿者名や投稿者アーカイブを非表示にする方法

当サイトはアフィリエイト広告を利用しています。

WordPressでは、投稿者名や投稿者アーカイブから、管理画面にログインする際に使用する「ユーザー名」を簡単に取得できてしまうため、これらの情報を誰でも閲覧できる状態にしておくのは、セキュリティ上危険です。

そこで今回は、WordPressで投稿者名や投稿者アーカイブを非表示にする方法をご紹介します。

WordPressのユーザー名を守るために非表示にしたほうが良いもの

WordPressのユーザー名を守るために非表示にしたほうが良いものは、以下のとおりです。

  • 投稿者名
  • 投稿者アーカイブ
  • WP RESET APIのユーザー名
  • 標準サイトマップの投稿者アーカイブ

投稿者名

通常はユーザー名がそのまま投稿者名となるため、記事に投稿者名を表示している場合は、自らユーザー名をさらけ出していることになります。

投稿者名

投稿者アーカイブ

投稿者アーカイブとは、以下のような投稿者の記事一覧ページのことです。投稿者アーカイブはURLが「/author/ユーザー名」となっているため、アクセスできる状態だとURLからユーザー名を取得されてしまいます。

投稿者アーカイブ

「そもそもユーザー名がわからなければ投稿者アーカイブにアクセスできないのでは?」と思うかもしれませんが、実は投稿者アーカイブへは「/?author=ユーザーID」からもアクセス可能となっており、このURLでアクセスすると自動的にユーザー名が入ったURLに切り替わってしまいます。ユーザーIDは数字なので、1から順に入力していけば当たります。

「/?author=ユーザーID」とそのリダイレクト先

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
「/wp-json/wp/v2/users」にアクセスした結果

標準サイトマップの投稿者アーカイブ

WordPress5.5からは、XMLサイトマップを作成する機能が搭載されており、この機能で作成したサイトマップには投稿者アーカイブが含まれます。

標準サイトマップは「/wp-sitemap.xml」となっており、このサイトマップ内の
/wp-sitemap-users-1.xml」にアクセスすると、投稿者アーカイブのURLが表示され、そこからユーザー名を取得できます。

標準サイトマップの「/wp-sitemap-users-1.xml」にアクセスした結果

WordPressで投稿者名を非表示にする方法

WordPressで投稿者名を非表示にする方法には、以下のようなものがあります。

  • ニックネームをブログ上の表示名にする
  • CSSをカスタマイズする

方法1:ニックネームをブログ上の表示名にする

「投稿者名は表示したいけど、ユーザー名はバレたくない」という場合は、ニックネームをブログ上の表示名にする方法がおすすめです。

ブログ上の表示名はデフォルトだと「ユーザー名」ですが、「ニックネーム」にすることも可能です。ニックネームをブログ上の表示名にすれば、記事にはニックネームが投稿者名として表示されるため、「投稿者名を表示しつつ、ユーザー名を非表示にする」といったことが可能となります。

ニックネームをブログ上の表示名にする場合は、まずWordPress管理画面の「ユーザー」⇒「プロフィール」をクリックします。

「ユーザー」メニュー

「ニックネーム」に、ユーザー名とは異なる名前を入力し、「ブログ上の表示名」からニックネームを選択します。設定が完了したら一番下までスクロールして「プロフィールを更新」ボタンをクリックしましょう。

「プロフィール」画面

これで投稿者名を表示しつつユーザー名を非表示にできます。

方法2:CSSをカスタマイズする

「投稿者名そのものを非表示にしたい」という場合は、CSSをカスタマイズする方法がおすすめです。

CSSをカスタマイズする場合は、まずブラウザで投稿者名が表示されているページを開き、検証ツールで投稿者名のクラス名を特定します。Chromeで検証ツールを表示するには、[Ctrl]+[Shift]+[I]を押します。

Chromeの検証ツール

検証ツールを表示したら、[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」のリダイレクト先を投稿者アーカイブではなくトップページにできます。

プラグインを使う場合は、まず当該プラグインをインストール・有効化します。

プラグインのインストール方法や有効化方法がわからない方は、以下の記事をご覧ください。

MEMO

SiteGuard WP Pluginを有効化するとログインページが変わります。「新しいログインページURL」をクリックし、表示されたページを新しいログインページとしてブックマークしておきましょう。

SiteGuard WP Plugin有効化直後の画面

WordPress管理画面の「SiteGuard」⇒「ダッシュボード」をクリックします。

「SiteGuard WP Plugin」メニュー

「ユーザー名漏えい防御」をクリックします。

SiteGuard WP Pluginの「ダッシュボード」画面

「有効」をクリックしたら、一番下までスクロールして「変更を保存」ボタンをクリックしましょう。

SiteGuard WP Pluginの「ユーザー名漏えい防御」画面

これで「/?author=ユーザーID」にアクセスすると投稿者アーカイブではなくトップページが表示されるようになります。

方法2:functions.phpをカスタマイズする

プラグインを使いたくない場合は、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無効化」にチェックを付け、一番下までスクロールして「変更を保存」ボタンをクリックします。

SiteGuard WP Pluginの「ユーザー名漏えい防御」画面

これで「/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設定」⇒「本文」⇒「投稿者名の表示」のチェックを外して「変更をまとめて保存」ボタンをクリックすると非表示にできます。

Cocoonの場合の投稿者名の表示/非表示設定場所

yStandard」の標準サイトマップの投稿者アーカイブは、WordPress管理画面の「外観」⇒「カスタマイズ」⇒「XMLサイトマップ」⇒「投稿者別サイトマップを作成する」のチェックを外して「公開」ボタンをクリックすると非表示にできます。

yStandardの場合の標準サイトマップの投稿者アーカイブの表示/非表示設定場所

今回ご紹介した方法で非表示にできない場合は、テーマの機能で非表示にできないか、「テーマ名 投稿者名 非表示」などのキーワードで検索してみましょう。

まとめ

今回は、WordPressで投稿者名や投稿者アーカイブを非表示にする方法をご紹介しました。

投稿者名は、ニックネームをブログ上の表示名にするか、CSSをカスタマイズすることで非表示にできます。投稿者アーカイブを非表示にしたい場合は、プラグイン「SiteGuard WP Plugin」を使うか、functions.phpをカスタマイズしましょう。

ユーザー名を守るには、WP RESET APIのユーザー名や、標準サイトマップの投稿者アーカイブも非表示にする必要があります。表示されている場合は、今回ご紹介した方法で非表示にしてみてくださいね。