Les types d’articles personnalisés sont très pratiques. Comme l’explique très bien Jérémy Thomas dans son introdution à WordPress 3, les Custom Post Types permettent d’élargir les différents types de contenus pris en charge depuis WordPress 3.0. A côté des Pages, des Posts ou des Liens, vous pourrez ajouter le type Porfolios, Projets ou Petites Annonces. Le système mis en place fonctionne bien, mais je suis tombé dernièrement sur un problème de page d’erreur 404 lié à la réécriture d’URL en voulant affichant un article issu d’un Custom Post Type. Avec les permaliens par défaut, tout fonctionne, tandis qu’avec une structure de permaliens personnalisés, ce n’est plus le cas.
Réécriture d’URL
Pour y remédier, ajoutez-donc une fonction de réécriture (Add Rewrite Rules for Custom Post Types) dans votre fichier functions.php :
add_filter('generate_rewrite_rules', 'customposttype_rewrites'); function customposttype_rewrites($wp_rewrite) { $newrules = array(); $newrules['mycustomposttype/?$'] = 'index.php?post_type=mycustomposttype'; $wp_rewrite->rules = $newrules + $wp_rewrite->rules; }
Remplacez ensuite les deux occurences de mycustomposttype par le nom de votre Custom Post Type (ex. petiteannonce) et le chat est dans le sac =^__^=
Sinon, ca marche aussi avec les options « has_archive » et « rewrite » (slug) lors de la déclaration du « custom post type »
http://codex.wordpress.org/Function_Reference/register_post_type#Arguments
add_rewrite_rule, add_permastruct, add_rewrite_tag sont des fonctions qui sont plus simples à utiliser et à activer dans un filtre ‘init’… quand on ne veut pas utiliser les règles activés lors de la déclaration de la taxinomie ou du custom post. Le plugin Rewrite analyzer permet de vérifier le bon fonctionnement des nouvelles règles de réécriture
Un grand merci pour cette solution simple et rapide qui met fin à deux heures et demie de recherches infructueuses !
Est-il prévu que ce problème soit résolu en natif dans un futur proche ?