Come creare alias delle slug di post, taxonomy e custom content type in WordPress

wordpress_blackLo scenario è quello di un tema di WordPress che definisce un custom content type a cui è assegnata la slug “promotion”, ma per una questione di SEO è necessario che lo stesso custom content type risponda anche a “promozione” e alla traduzione della relativa parola in un certo numero di lingue straniere.

Premesso che si può ottenere lo stesso risultato agendo sul file .htaccess, almeno se ci limitiano al fatto di potere arrivare agli stessi contenuti via web sostituendo “promotion” con “promozione” nell’URL, la soluzione a mio parere più completa consiste nell’aggiungere una action specifica nel file functions.php, come nell’esempio che segue:

function add_custom_rewrite_rule() {
    if (($current_rules = get_option('rewrite_rules'))) {
        foreach ($current_rules as $key => $val) {
            if (strpos($key, 'promotion') !== false) {
                add_rewrite_rule(str_ireplace('promotion', 'promozione', $key), $val, 'top');
            }
        }
    }
    flush_rewrite_rules();
}
add_action('init', 'add_custom_rewrite_rule');

La stessa procedura si può applicare facilmente anche alle taxonomy e, più in generale, a qualsiasi tipo di dato soggetto a rewrite_rules:

function add_custom_rewrite_rule() {
    if (($current_rules = get_option('rewrite_rules'))) {
        foreach ($current_rules as $key => $val) {
            if (strpos($key, 'company-category') !== false) {
                add_rewrite_rule(str_ireplace('company-category', 'categoria', $key), $val, 'top');
            }
        }
    }
    flush_rewrite_rules();
}
add_action('init', 'add_custom_rewrite_rule');

fonte: https://goo.gl/iJBIpv

 

Condivido

Leave a comment