Regola di riscrittura per tassonomia personalizzata

12 feb 2014, 13:25:50
Visualizzazioni: 15.5K
Voti: 3

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)

0
Tutte le risposte alla domanda 1
0

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.

12 feb 2014 16:11:47