WordPressのauthor、投稿者、作成者を非表示にしたい

WordPressのテーマによっては、記事の下などに投稿者が表示されてしまい、なんとか消せないだろうかと思うこともあると思います。
今回はその場合の方法を書いてみたいと思います。

アーカイブでauthorのページがある

まずWordPressのデフォルトの機能として、投稿者のページが存在することはご存知でしょうか?
下記を入れてみてください。

http://○○.com/?author=1

URLがパッと切り替わって投稿者が表示されていませんか?

下記のように

http://○○.com/author/ログインID/

投稿者がログインIDで、これがわかってしまったら、あとはパスワードさえ分かれば簡単にログインできてしまうし、攻撃だってできてしまいますよね。
これはけっこう危険ではないでしょうか。

「ブログ上の表示名」を「ユーザー名」とは違う名前に変更しても無駄?

さきほど投稿者アーカイブのアドレスを書きましたが、

http://○○.com/?author=1

例えばログインIDがtest01としたら下記のように表示されます。

これでは投稿した記事下などに投稿者名を表示させないようにしても、アーカイブページの表示で投稿者がわかってしまうわけですよね。
セキュリティ的にもどうかなと思います。

通常、ログイン名と投稿者は一緒の場合が多いのではないでしょうか?というより何もいじっていない状態ではないでしょうか?
デフォルトではログイン名と投稿者というのは一緒なので、自ら変更する必要があります。

よく「ブログ上の表示名」を「ユーザー名」とは違う名前に変更しましょうと書いている方がいますが、試しにやってみます。

[管理画面]の[ユーザー]から[あなたのプロフィール]を押します。
さきほどの例ではログインIDはtest01なので、

「ブログ上の表示名」を「ユーザー名」とは違う名前に変更します。
test01を「test02」とでもしてみます。

http://○○.com/?author=1

をまた入れてみます。

ページ内はさきほど「ブログ上の表示名」を「test02」にしたので、そのように表示されています。
でもよく見ると上のURLが「test01」なのでログインIDがそのまま表示されています。

せっかく「ブログ上の表示名」を「test02」にしたので、てっきり「test02」が表示されるのかと思ったらそうではありませんでした。
これでは「ブログ上の表示名」を変えたってあまり意味がありませんね。

とはいえリンクさえなければ問題ない話です。
あと基本設定として、まずこちらをするのはデフォルトかなとも思いますので、まずはこちらでログインIDとは違う「表示名」に変更しておきましょう。

投稿者のアーカイブページを無効にする

まずはデフォルトの設定で勝手に作成されてしまう投稿者名のアーカイブページそのものを表示させないようにしたいと思います。

functions.phpに下記ソースを追加すれば、無効化できるようです。

add_filter( 'author_rewrite_rules', '__return_empty_array' );

適用させるには[管理画面]→[設定]→[パーマリンク]の「変更を保存」を押します。

ちなみになぜパーマリンクを更新しておかなければならないかというと、今回はauthor_rewrite_rulesというリライトルールを変更するフックを使っています。
命令を追加したらルールをDBに保存しなければ使えないので、パーマリンクを更新するとこちらが再設定されるのでパーマリンクの設定を更新する必要があります。

もしくはauthor=1や投稿者IDをURLに入れると、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');

プラグインでも投稿者アーカイブを作らせない機能があるものがあります。
Edit Author Slugです。
function.phpをいじるのが怖い人は、プラグインを使ってもよいかもしれませんね。
ただプラグインをやたらたくさん入れるのはおすすめできませんので、functions.phpにちょこっと書いて対応できそうな場合は、そちらのほうがよいと思います。

「Simplicity」のページに投稿者を表示させない方法

このテーマの場合は、「外観→カスタマイズ→レイアウトの設定(投稿・固定ページ)」の「投稿者情報の表示」のチェックを外せば消えます。

auther

上記で説明したようにリンクを見るとIDがわかってしまうので、投稿者そのものを隠してしまおうということです。

「STINGER8」のページに投稿者を表示させない方法

「STINGER8」の場合は、「執筆者:」というのが表示されると思います。

single.phpの110行目、indx.phpの110行目、page.phpの75行目に

<p>執筆者:<?php the_author_posts_link(); ?></p>

があります。

こちらをすべて消します。
子テーマを使っている場合は、上記を消したsingle.php、index.php、page.phpを子テーマのstinger8-childフォルダに入れてアップロードしましょう。

投稿者を非表示にする場合の注意点

ちなみに構造化データテストを使い、サイトの構造化チェックをすると「author がありません」というエラーが出てきてしまう場合があると思います。
これが気になる方は、ちょっと抜け道というか最近ではTwitterのIDを表示させる人も多いようです。ただサイトの投稿者として正しい情報なのかというと、若干ハテナにも思いますが、いいような気もしますし、とりあえず何かしらauthorとして表示させておけばエラーにはならないようです。あとはリンクを表示させると、本当のID名が表示されてしまいますので、リンクだけ切るというのもありかもしれません。せっかくユーザーからIDではなく表示名に変更したのに、投稿者のページへのリンクでIDがわかってしまうので、リンクを表示させなければよいわけです。いちおリンクは必須の要件ではないようなので、リンクを切ってもエラーにはならないようです。

ちなみに「Simplicity」では「外観→カスタマイズ→レイアウトの設定(投稿・固定ページ)」で「投稿者情報をTwitter IDに 」にチェックすればTwitterになりますし、author-link.phpの21行目あたりにある<a>タグリンクを外せば、リンクは消し、ユーザーで設定した表示名だけ表示させることができます。

もしくは、copyright部分をauthorとして認識させてしまおうという方法もあるようです。
こちらについては新テーマ「コクーン」で少し書いておりますのでよかったら参考にしてください。
他のテーマでも同じように設定すればエラーを出ないようにできるのではと思います。

WordPressのテーマCocoon(コクーン)の投稿者を非表示にしたい!
WordPressの無料テーマ「Cocoon(コクーン)」で、プラグイン無しで投稿者を非表示にする方法と構造化データのテストでもエラーを出さない方法も合わせて書きたいと思います。

またWordPressのセキュリティについてはこちらにも記事を書いていますのでよかったら参考にしてください。

エックスサーバーでWordPressをインストールしたらすぐにしておきたいセキュリティ対策
エックスサーバーに入れたWordPressのセキュリティを強化するため、wp-config.phpのパーミッション、.htaccessにアクセス拒否の命令を追加する方法などを書いています。

コメント

  1. […] ンクにIDが出るのでこれも消したい情報。テンプレートによって違いがあるので、テンプレートの解説を見たほうが確実かもしれません。WordPressのauthor、投稿者、作成者を非表示にしたい […]