Regola di riscrittura per tassonomia personalizzata
Sono abbastanza nuovo su WordPress e sto cercando di creare un blog di ricette.
Ho creato una tassonomia personalizzata per gli ingredienti:
register_taxonomy(
'ingredient',
'post',
array( 'label' => 'Ingredient',
'hierarchical' => true
),
array( 'rewrite' => array (
'slug'=>'recipes-with'
)
);
Tutto funziona e i miei URL sono del tipo:
www.miosito.com/recipes-with/cipolla
ma vorrei che fossero del tipo:
www.miosito.com/recipes-with-cipolla
Ho provato a guardare add_rewrite_rule()
, ma non riesco a farlo funzionare.
Qualsiasi aiuto sarebbe molto apprezzato!
MODIFICA: Ecco come ho risolto il problema con l'aiuto di toni_lehtimaki.
1) Ho rimosso l'array rewrite
negli argomenti di register_taxonomy:
register_taxonomy( 'ingredient', 'post', array('label'=>'Ingredient', 'hierarchical'=>true));
2) Poi ho aggiunto alcune regole di riscrittura:
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) L'ultima cosa necessaria è stata aggiungere un filtro:
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) Svuotare le regole di riscrittura (basta andare in Impostazioni->Permalink e salvare)

Ho creato questa regola con la funzione add_rewrite_rule()
:
add_rewrite_rule('^recipes-with-([^/]*)/?','index.php?ingredient=$matches[1]','top');
Ho eseguito alcuni test per la regola sopra e funziona bene quando viene utilizzata per una tassonomia alla volta. Ecco il codice dal mio functions.php:
add_action( 'init', 'create_ingredient_tax' );
function create_ingredient_tax() {
register_taxonomy(
'ingredient',
'post',
array( 'label' => 'Ingrediente',
'hierarchical' => true
),
array( 'rewrite' => array (
'slug'=>'recipes-with'
))
);
}
// Ricordati di eseguire flush_rewrite_rules(); o di visitare la pagina delle impostazioni della struttura dei permalink di WordPress
add_rewrite_rule('^recipes-with-([^/]*)/?','index.php?ingredient=$matches[1]','top');
Ho poi utilizzato il template file taxonomy-post_format.php
dal tema WordPress twentyfourteen per verificare che tutto funzioni correttamente. Ho anche resettato le regole di riscrittura (flush rewrite rules) per rendere effettiva la nuova regola.
