Je suis assez nouveau sur wordpress et j'essaie de créer un blog de recettes.
J'ai créé une taxonomie personnalisée pour les ingrédients:
register_taxonomy(
'ingredient',
'post',
array( 'label' => 'Ingredient',
'hierarchical' => true
),
array( 'rewrite' => array (
'slug'=>'recipes-with'
)
);
Tout fonctionne et mes URL sont comme
www.mysite.com/recipes-with/onion
mais j'aimerais que mes urls soient comme
www.mysite.com/recipes-with-onion
J'ai essayé de regarder dans add_rewrite_rule()
, mais je n'arrive pas à le faire fonctionner.
Toute aide serait grandement appréciée!
EDIT: Voici comment j'ai résolu le problème avec l'aide de toni_lehtimaki aussi.
1) J'ai supprimé le tableau rewrite
dans l'argument args de register_taxonomy afin qu'il devienne:
register_taxonomy( 'ingredient', 'post', array('label'=>'Ingredient', 'hierarchical'=>true));
2) Puis j'ai ajouté des règles de réécriture
add_rewrite_rule('^recipes-with-(.*)/page/([0-9]+)?$','index.php?ingredient=$matches[1]&paged=$matches[2]','top');
add_rewrite_rule('^recipes-with-(.*)/?','index.php?ingredient=$matches[1]','top');
3) La dernière chose à faire était d'ajouter un filtre
add_filter( 'term_link', 'change_ingredients_permalinks', 10, 2 );
function change_ingredients_permalinks( $permalink, $term ) {
if ($term->taxonomy == 'ingredient') $permalink = str_replace('ingredient/', 'recipes-with-', $permalink);
return $permalink;
}
4) Flush rewrite rules (vous devez seulement aller dans settings-> permalink et cliquer sur save)
Je suis venu avec cela avec la add_rewrite_rule()
:
add_rewrite_rule('^recipes-with-([^/]*)/?','index.php?ingredient=$matches[1]','top');
J'ai fait quelques tests pour ce qui précède, et cela fonctionne bien lorsque vous l'utilisez pour une taxonomie à la fois. Voici le code de mon functions.php:
add_action( 'init', 'create_ingredient_tax' );
function create_ingredient_tax() {
register_taxonomy(
'ingredient',
'post',
array( 'label' => 'Ingredient',
'hierarchical' => true
),
array( 'rewrite' => array (
'slug'=>'recipes-with'
))
);
}
// Remember to flush_rewrite_rules(); or visit WordPress permalink structure settings page
add_rewrite_rule('^recipes-with-([^/]*)/?','index.php?ingredient=$matches[1]','top');
J'ai ensuite utilisé taxonomy-post_format.php
template fiel de WordPress vingt-quatorze thème pour vérifier que cela fonctionnait. J'ai également vidé les règles de réécriture pour que la nouvelle règle soit effective.