WordPressのカスタマイズ方法やプラグインレビューを中心に、パソコン/動物/植物のことなどを紹介するホームページです

【備忘録】WordPressの作者アーカイブURLから「/author」を削除する方法

公開日:2018(平成30)年5月22日/最終更新日:

Knowledge Base Wordpress 設定



【景品表示法に基づく表記】ページ内のコンテンツには、商品プロモーションが含まれています

本文の上下にあることが多い作者のアーカイブ(過去記事)リンク。クリックするとその人の書いた記事がずらっと表示されますね。URLを見ると「サイトのURL/author/〇〇」となっていますが、今回はその中の「/author」を消す(なくす)方法はないかというのがテーマです。

あまり必要ないかとも思いますが、そんなことしたいなぁと思う方もいるかも知れないと思って調べてみました。やっぱりカスタマイズの仕方は断然英語圏の方の方がきちんと紹介してくれてますねぇ・・ということで見つけた参考ページを元に紹介しておきます。

作者アーカイブのURLから「/author」を削除する方法

上の参考リンクを開いて自動翻訳すれば意味は分かるかと思いますが、自動翻訳のない方のためにグーグル君が頑張った訳を掲載しておきますね

著者スラッグからWordPressの著者プレフィックスを削除する方法についてちょっとしたトリックがあります。
明確にするために、このスニペットはあなたがターンするのに役立ちます:「http://domain.com/author/peter/を」へ:「http://domain.com/peter/」。

WordPressの著者のパラダイムを使用するサイトのすべてのリンクは、元のリンクを保持せずに新しいリンクにリダイレクトする必要があるため、リダイレクトは使用しないで、WordPressで実際の機能を作成しますfunctions.phpファイル。私たちは、それぞれのユーザの名前を希望する形式で一致させるためにWP書き換えルールを追加する必要があります。

マークアップの最初の部分は、author_rewrite_rulesフィルタにフックし、著者の書き換えルールを置き換えます。これにより、すべてのユーザー名が取得され、各ユーザー専用の書き換えルールが追加されます(以下のマークアップはフィードを処理しませんので、必要があればWP No Category Baseソースを参照してください)。
マークアップの第2の部分は、author_linkフィルタにフックし、返されたURLから ‘author’ベースを削除する関数です。
説明
このコードをfunctions.phpファイルに追加します。
*このスニペットを実装した後、設定内の「permalinks」に移動して「変更を保存」をクリックして、書き換えルールをフラッシュしてください。

以下のコードをテーマのfunctions.phpへ追記すると適用されます

// The first part //
add_filter('author_rewrite_rules', 'no_author_base_rewrite_rules');
function no_author_base_rewrite_rules($author_rewrite) {
global $wpdb;
$author_rewrite = array();
$authors = $wpdb->get_results("SELECT user_nicename AS nicename from $wpdb->users");
foreach($authors as $author) {
$author_rewrite["({$author->nicename})/page/?([0-9]+)/?$"] = 'index.php?author_name=$matches[1]&paged=$matches[2]';
$author_rewrite["({$author->nicename})/?$"] = 'index.php?author_name=$matches[1]';
}
return $author_rewrite;
}

// The second part //
add_filter('author_link', 'no_author_base', 1000, 2);
function no_author_base($link, $author_id) {
$link_base = trailingslashit(get_option('home'));
$link = preg_replace("|^{$link_base}author/|", '', $link);
return $link_base . $link;
}

訳にも書いてありますが、設定したら管理画面の「設定」→「パーマリンク設定」を開き、何もしないで更新することでパーマリンク構造が初期化されて動作するようになりますからお忘れなく。

また逆にこのコードを削除して元に戻す場合も同様にパーマリンク構造の初期化をしてくださいね。

※「/author」がなくなることでサイトのパーマリンク設定によってはスラグがかぶってしまう場合があります。そんなときどんな動作をするのか??というところまでは検証していませんので自己責任で使ってくださいね。

おまけ 作者アーカイブからユーザー名などが判明するのを防ぐ方法

ちなみにこの件とは関係あるようなないようなですが、この作者アーカイブのURLからユーザー名やユーザーIDがバレバレなのご存知ですか?このサイトでも履歴を取ると結構この部分から類推してログインしてよ--なんて輩が結構います。全然別物にしてるのにねぇ・・・と半ば微笑ましく履歴を見てます。

また、1人で管理していて作者アーカイブが必要ないという方はテーマでそれを出力しているタグを削除するのも手かと思います。

著:清水 由規, 著:清水 久美子, 著:鈴木 力哉, 著:西岡 由美, 読み手:星野 邦敏, 読み手:吉田 裕介
¥2,889 (2024/02/08 17:07時点 | Amazon調べ)