web-dev-qa-db-ja.com

カスタム投稿タイプ毎月および年間アーカイブの書き換えルール 

カスタム投稿タイプ "contest_recipe"があります。私は以下のURLでコンテストレシピの投稿を年と日付で見ることができます。

http://example.com/2011/?post_type=contest_recipe - shows all 2011 contest recipes
http://example.com/2011/7/?post_type=contest_recipe - shows all July 2011 contest recipes

URLを簡単にしたい

http://example.com/2011/recipes
http://example.com/2011/7/recipes

これは可能ですか?書き換え規則の概念には慣れていません。誰かがこれについて学ぶ方法や例を提供する方法についてのチュートリアルを推奨できますか?

6
hp3

これを使用して、カスタム投稿タイプの年間アーカイブと月次アーカイブを有効にしました。このコードをfunctions.phpファイルに入れるだけです。

これにより、カスタムルールがRules配列の一番上に追加されます。 NB - Wordpressはルール配列を使用して書き換えルールを保存します。

<?php
        function wpse22992_custom_post_rewrite( $rewrite_rules ) {

                $cpslug = 'contest_recipe'; // custom post type slug

                // Rule to display monthly archive -> contest_recipe/2012/08/
                $year_archive = array( $cpslug . '/([0-9]{4})/([0-9]{1,2})/?$' => 'index.php?year=$matches[1]&monthnum=$matches[2]&post_type=' . $cpslug );

                // Rule to display yearly archive -> contest_recipe/2012/
                $month_archive = array( $cpslug . '/([0-9]{4})/?$' => 'index.php?year=$matches[1]&post_type=' . $cpslug );

                $rewrite_rules = $year_archive + $month_archive + $rewrite_rules;

                return $rewrite_rules;

        }

        add_filter('rewrite_rules_array', 'wpse22992_custom_post_rewrite');
?>

リソース -

3
amit