Sì, questo è possibile, ma se il plug-in sta creando un tipo di post personalizzato utilizzando il rewrite => array('slug' => 'post_type')
parametro, è improbabile che tu possa sostituire la lumaca.
Ogni volta che vengono creati tipi di post personalizzati, le regole di riscrittura degli URL vengono scritte nel database. A seconda dell'azione che avvia la creazione del tipo di post personalizzato (come l' azione init ), WordPress annulla le regole di riscrittura e ripristina gli slug del tipo di post personalizzato indipendentemente dalle modifiche che si tenta di apportare.
Detto questo, puoi fornire lumache personalizzate per i tipi di post personalizzati. L'esempio seguente presuppone che tu abbia un tipo di post personalizzato di movies
e che stai tentando di modificare la /movies/
lumaca in /films/
.
Per essere completo, ecco la funzione di base utilizzata per definire il movies
tipo di post personalizzato. Il plugin a cui fai riferimento dovrebbe fare qualcosa del genere:
function movies_register_post_type() {
register_post_type(
'movies',
array(
'labels' => array(
'name' => __('Movies'),
'singular_name' => __('Movie')
),
'public' => true,
'has_archive' => true,
'rewrite' => array(
'slug' => 'movies'
)
)
);
} // end example_register_post_type
add_action('init', 'movies_register_post_type');
Puoi modificare la tabella delle opzioni fornendo le tue regole personalizzate in base al tipo di post esistente.
Fondamentalmente, faremo questo:
- Prendi il set di regole esistente e poi scrivi il nostro con le nostre lumache personalizzate
- Assegna alla nuova regola una priorità più alta rispetto alla lumaca del tipo di post personalizzato
Ecco come puoi farlo:
function add_custom_rewrite_rule() {
// First, try to load up the rewrite rules. We do this just in case
// the default permalink structure is being used.
if( ($current_rules = get_option('rewrite_rules')) ) {
// Next, iterate through each custom rule adding a new rule
// that replaces 'movies' with 'films' and give it a higher
// priority than the existing rule.
foreach($current_rules as $key => $val) {
if(strpos($key, 'movies') !== false) {
add_rewrite_rule(str_ireplace('movies', 'films', $key), $val, 'top');
} // end if
} // end foreach
} // end if/else
// ...and we flush the rules
flush_rewrite_rules();
} // end add_custom_rewrite_rule
add_action('init', 'add_custom_rewrite_rule');
Ora avrai due modi per accedere ai tuoi film:
/movies/Back-To-The-Future
/films/Back-To-The-Future
Si noti che io non consiglio l'aggancio add_custom_rewrite_rule
in init
azione in quanto scatterà troppo frequentemente. Questo è solo un esempio. Un posto migliore per applicare la funzione sarebbe l'attivazione del tema, l'attivazione del plug-in, forse l'azione save_post, ecc. A seconda di ciò che è necessario fare, potrebbe essere necessario attivarlo solo una o poche volte.
A questo punto, potresti voler prendere in considerazione l'aggiornamento dei permalink per il tipo di post personalizzato in modo da utilizzare la ' /movies/
lumaca ' . Ad esempio, se navighi /films/
, vedrai un elenco di tutti i tuoi film, ma passando con il mouse sopra il titolo rivelerai che la /movies/
lumaca è ancora in uso.
Per fare un ulteriore passo, potresti tecnicamente installare un reindirizzamento 301 per catturare tutti i link /movies/
per reindirizzare alla loro /films/
controparte, ma tutto dipende da cosa stai tentando di fare.