Je crée un site Wordpress avec plusieurs types de messages personnalisés. Chaque type de publication est un magazine différent. J'ai également des champs méta personnalisés pour une année et un numéro de magazine.
Je voudrais avoir des urls (utilisé archive.php):
http://my_site/magazine/name/
http://my_site/magazine_name/year/
http://my_site/magazine_name/year/issue/
Je l'ai fait par code:
function magazine_rewrite_tag() {
add_rewrite_tag('%issue_year%', '([0-9]{4})');
add_rewrite_tag('%issue%', '([0-9])');
}
add_action('init', 'magazine_rewrite_tag', 10, 0);
et:
function magazine_rewrite_rules() {
add_rewrite_rule('^([a-z]+)/([0-9]{4})/([0-9])?', 'index.php?post_type=$matches[1]&issue_year=$matches[2]&issue=$matches[3]', 'top');
add_rewrite_rule('^([a-z]+)/([0-9]{4})?', 'index.php?post_type=$matches[1]&issue_year=$matches[2]', 'top');
}
add_action('init', 'magazine_rewrite_rules');
Bien sûr, j'ai également des requêtes personnalisées dans archive.php. Et ça marche bien.
Mais maintenant, mes URL pour des articles uniques ne fonctionnent pas. Par défaut, c'est:
http://my_site/magazine/post-title
mais il montre tous les articles du magazine comme url (et il a utilisé le modèle archive.php):
http://my_site/magazine/
Comment ajouter correctement des règles de réécriture pour des articles personnalisés uniques? Il est possible, je voudrais avoir des URL pour un seul message (uniquement pour les types de messages personnalisés choisis) dans ce format:
http://my_site/magazine/year/issue/post-title
la source
10
c'est la priorité par défaut . Vous pouvez laisser les deux dans ce cas… ou essayez un nombre plus élevé. (2) Avez-vous vérifié les règles de réécriture résultantes? Assurez-vous également de vérifier l'ordre de ces règles au fur et à mesure qu'elles sont traitées dans leur ordre. Dump$GLOBALS['wp_rewrite']
. (3) Avez-vous ajoutéquery_vars
que cela pourrait entrer en conflit?Réponses:
J'ai trouvé la solution! Un plugin Monkeyman Rewrite Analyzur a été très utile: https://wordpress.org/plugins/monkeyman-rewrite-analyzer/
Alors maintenant, j'ai de telles URL de travail ...
single.php:
archive.php:
Sur une page d'éditeur de publication personnalisée dans wp-admin, j'utilise le plugin Advanced Custom Fields pour l'année et le problème. Vous pouvez également définir vous-même des méta-champs.
Ensuite, j'ai ajouté des balises de réécriture pour l'année et le problème:
Ensuite, j'ai ajouté des règles de réécriture pour toute combinaison d'URL:
À la fin, je remplace les URL standard pour les miennes, avec l'année d'émission et l'édition
la source