0

書き換えルールを追加しようとすると、奇妙な問題が発生します。

まず、私の設定についてのメモ。サイトの別の特定のセットアップに date.php ファイルを使用しています。

私が問題を抱えているのは、カスタマイズされたアーカイブ ページです。date.php テンプレートを台無しにしないために、wordpress 内に新しいページを設定しようとし、アーカイブを表示する独自のテンプレートを作成しました。

日付で URL をキャッチし、date.php にリダイレクトしないようにするために、次の add_rewrite_rules を設定しました。

function my_archives() {

    add_rewrite_rule("my-archives/([0-9]{4})/([0-9]{1,2})/page/([0-9]{1,})/?$", 'index.php?pagename=my-archives&year=$matches[1]&monthnum=$matches[2]&paged=$matches[3]', 'top');

    add_rewrite_rule("my-archives/([0-9]{4})/([0-9]{1,2})/?$", 'index.php?pagename=my-archives&year=$matches[1]&monthnum=$matches[2]', 'top');    

}

add_action('init', 'my_archives');  

リンクが正しく機能していたので、すべて問題ないと思いました。例: http://mysite.com/my-archives/2013/09/ および http://mysite.com/my-archives/2013/09/page/2/ ページ付きの結果。

1か月後、何らかの理由で、現在の日付から1か月遅れた日付にのみ正しくリダイレ​​クトされることがわかりました。したがって、現在の日付が 2013/10/ であるため、リダイレクトされるのは /2013/09/ だけであり、それ以外はすべて 404 ページにリダイレクトされます。

これの考えられる原因に関する提案、または誰かが私のコードに間違っているものを見た場合、それは大歓迎です。

4

1 に答える 1

0

ひょっとして、そのクエリの結果が得られないだけですか?

WordPress がクエリを正しく理解していることを確認するために、WordPress クエリにフックしていますか (WordPress は、指定された年月内に「my-archives」というスラッグを含むページを見つけようとしている可能性があります。 404 エラーが表示されます)。

次のことを試してください。

var_dump( get_posts( 'pagename=my-archives&year=2013&monthnum=10' ) );

結果が返されるかどうかを確認します。そうでない場合は、おそらくあなたの問題です。

これを回避するには、書き換えルールを次のように変更することをお勧めします。

add_rewrite_rule("my-archives/([0-9]{4})/([0-9]{1,2})/?$", 'index.php?pagename=my-archives&my_year=$matches[1]&my_monthnum=$matches[2]', 'top');

メインの WordPress クエリにフックしていない場合は、カスタム ページ テンプレートでクエリを実行していると思われます。そこで、 andの代わりにmy_yearandmy_monthnumクエリ変数を探す必要があります。yearmonth

メインの WordPress クエリを実際に変更する(オブジェクトをparse_request渡し、$wpオブジェクトを渡さない$wp_query) またはpre_get_postsアクション ($wp_queryオブジェクトを渡す) の方がより良い解決策になる可能性があることに注意してください。

于 2013-10-29T23:38:02.140 に答える