web-dev-qa-db-fra.com

Règle de réécriture pour le type d'article personnalisé Archives mensuelles et annuelles 

J'ai un type de message personnalisé "contest_recipe". Je peux consulter les publications de recettes du concours par année et par date avec les URL suivantes:

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

Je voudrais simplifier l'URL à

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

Est-ce possible? Je ne connais pas le concept de règles de réécriture. Quelqu'un peut-il recommander un tutoriel sur la façon d'apprendre à ce sujet ou donner un exemple?

6
hp3

J'ai utilisé cela pour activer les archives annuelles et mensuelles pour un type de publication personnalisé. Il suffit de déposer ce code dans votre fichier functions.php.

Cela ajoutera votre règle personnalisée directement en haut du tableauRules/. NB - Wordpress utilise un tableau de règles pour stocker les règles de réécriture.

<?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');
?>

Ressource -

3
amit