この記事をシェアする

WordPressをCMSとしてに利用する場合、作成者(投稿者)アーカイブが必要ないケースがあります。
基本的に作成者アーカイブは作成されてしまうので、これを「作成されない」方法をまとめておきます。(Twitterでのやりとりをまとめただけです)

ちなみにTwitterでつぶやいたら、@jim0912 さんに光の速さで返信をもらいました。

ステキです。さすがです。
ということで、テーマのfunctions.phpに以下を記述。

add_filter( 'author_rewrite_rules', '__return_empty_array' );

上記コードの意味はこちら

functions.phpを上書きした後は、最後に必ずダッシュボードの設定→パーマリンク設定で(変更しないで)「更新」をクリックしておいてください。

意味は分かったけど

これでとりあえず、当座の目標は達成して「やった〜!」と思ったところ、@jim0912 さんからツイートが。

お題を投げかけられました(汗)
先のツイートにもあるように「リライトルール」「wp-includes/rewrite.php」がキーワードになります。
コードを読んだり、Codexを検索してみると、 ばっちりありました。

要約すると

  • WP_Rewriteはリライトルールを管理するためのWordPressクラス。
  • リライトルールを変更する(フィルターをかける)ためのフックが用意されている。
    今回は投稿者アーカイブだったので author_rewrite_rules を使いました。よくあるパーマリンクに働きかけるプラグイン(WP No Category Baseなど)もこのフックを使っているようです。
  • flush_rules() というリライトルールを再生成し、データベースに保存する関数がある。
    リライトルールを functions.php やプラグインで追加したら flush_rules() でルールをDBに保存しなければ使えません。flush_rules() は基本的にパーマリンクの更新で呼ばれるので、パーマリンク設定を更新すればOK。

となります。

先に挙げたプラグイン「WP No Category Base」 はプラグインが有効化・無効化されたり、カテゴリーの追加・編集などのタイミングで flush_rules() を実行していましたが、今回のように、常にリライトルールを監視する必要がない場合は、パーマリンク設定で更新ボタンを押した方が間違いがないです(詳細はCodexにも書いてありますが、flush_rules()はリライトルールが変更されるときにだけ呼び出せばいいので) 。

と、理解したところでツイートしたところ


正解のようでした。

基本を理解するのが大事

WordPressに限りませんが、やりたいこと(実現したいこと)とそれに必要そうなキーワードでネットで検索すれば、多かれ少なかれTipsやコードスペニットは出てきます。
コードを丸写しすれば(コードの妥当性などは無視してもとりあえずは)希望したとおりの動作になるでしょう。

(余談ですが、ブログにコードを掲載するときは理解を深めるためと、裏付けになるようCodexや参考にしたサイトにリンクを張るようにしています。 )

しかし、今回のように 「なんでそのような動作になるのか」を理解することが大事だ思いました。

本来なら体系的に勉強したり、ソースコードをおっていけば良いのでしょうが 中々そんな余裕もないのが現状です(ノンプログラマーゆえ苦手、というのもあります)。
今後も分からないことをTwitterでぼやいたりすると思いますが、温かい目で見守っていただけると幸いです。

この記事をシェアする