サポート » 使い方全般 » author(著者)ページの月間アーカイブ

  • 解決済 yutayamadatippet

    (@yutayamadatippet)


    いつもお世話になっております。
    authorページで月間アーカイブを作りたいのですが、ネットに情報が見つからなかっため、こちらに記載させていただきます。

    wordpressで会員サイトを構築しており、以下のように各ユーザーの著者ページ毎に月間アーカイブのリストを持たせたいと思っております。

    ◯◯さんの月間アーカイブ
    2019年5月(10)
    2019年4月(4)
    2019年3月(7)

    また、上記はそれぞれリンクになっており、クリックするとその著者の該当の月に投稿したアーカイブが表示されるようなイメージです。

    URLとしては、
    https://hoge.jp/author/ユーザー名/2019/05/
    (パーマリンクの設定で著者ページは、/author/ユーザー名/という構成にしております)。
    というような形で実装したいのですが、authorページをそもそも階層構造にできるかどうかも分からない状況です。

    もしお分かりになる方や、ヒントなどいただける方がおりましたら、お教えいただけると幸いです。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • テーマのfunctions.phpに次のような記述を追加することでおおむね希望通りになるかと思います。

    function custom_rewrite_rules() {
        add_rewrite_rule( '^author/([^/]+)/([0-9]{4})/([0-9]{1,2})/?$',
            'index.php?author_name=$matches[1]&year=$matches[2]&monthnum=$matches[3]',
            'top' );
    }
    add_action( 'init', 'custom_rewrite_rules' );
    

    なおこのコードだけですとルールが保存されないので、「設定」-「パーマリンク」で
    「変更を保存」ボタンを押す必要があります。

    add_rewrite_rule関数の詳しい使い方はcodexなどでご確認ください。

    yutayamadatippet

    (@yutayamadatippet)

    >tmatsuur (@tmatsuur)さま

    早速、お教えくださりありがとうございます。

    試してみたところ、
    https://hoge.jp/author/ユーザー名/2019/05/

    上記URLを叩いてみたところ、以下のページの内容と変わらず、うまく動作しませんでした。
    https://hoge.jp/author/ユーザー名

    試しに、テンプレートファイルの「author.php」を削除してみたところ、「archive.php」のテンプレートファイルが読まれ、意図する動作になりました。

    author.phpが優先されて読み込まれてしまう状況なのですが、
    arcive.phpを優先的に読み込む、もしくは指定したユーザーの該当期間の投稿を表示させるための方法はありますでしょうか。

    URLが https://hoge.jp/author/ユーザー名/2019/05/ の場合はauthor.phpではなく、
    archive.phpで対応したいということでしょうか。

    テーマ内のテンプレートには優先度があり、arcive.phpよりもauthor.phpが高くなります。

    現状どのようなauthor.phpとarchive.phpがどのような内容になっているのかわかりませんが、
    author.phpを使用されているのであればauthor.php内で処理を切り分ける方が合理的だと思います。

    1.現状のarchive.phpで https://hoge.jp/author/ユーザー名/2019/05/ の際に
    コンテンツ部分を出力しているコードをauthor-date.phpに切り出す。
    2.現状のauthor.phpのコンテンツ部分を出力しているコードを author-common.php に
    切り出す。
    3.author.phpのコンテンツ部分出力部分は、次のようなコードで処理を振り分ける。

    if ( is_date() ) {
      get_template_part( 'author', 'date' );  // author-date.phpを読み込む
    } else {
      get_template_part( 'author', 'common' ); // author-common.phpを読み込む
    }
    yutayamadatippet

    (@yutayamadatippet)

    教えていただいた方法で無事に解決する事できました。
    add_rewrite_rule関数の存在自体は知っていたのですが、何に使うか分かっておらず、この機会にしっかりと勉強していきたいと思います。

    本当にありがとうございました。

    こちらのスレッドは、解決済みとさせていただきます。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「author(著者)ページの月間アーカイブ」には新たに返信することはできません。