Sim, isso é possível, mas se o plug-in estiver criando um tipo de postagem personalizado usando o rewrite => array('slug' => 'post_type')
parâmetro, não é provável que você consiga substituir a lesma.
Sempre que tipos de postagem personalizados são criados, as regras de reescrita de URL são gravadas no banco de dados. Dependendo de qual ação aciona a criação do tipo de postagem personalizado (como a ação init ), o WordPress liberará as regras de reescrita e restaurará as lesmas do tipo de postagem personalizada, independentemente das alterações que você tentar fazer.
Dito isso, você pode fornecer slugs personalizados para os tipos de postagem personalizados. O exemplo a seguir supõe que você tenha um tipo de postagem personalizada movies
e que esteja tentando alterar a /movies/
lesma para /films/
.
Para concluir, aqui está a função básica usada para definir o movies
tipo de postagem personalizada. O plug-in que você está referenciando deve fazer algo assim:
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');
Você pode modificar a tabela de opções, fornecendo suas próprias regras personalizadas com base no tipo de postagem existente.
Basicamente, faremos isso:
- Pegue o conjunto de regras existente e, em seguida, escreva o nosso com nossos próprios slugs personalizados
- Dê à nova regra uma prioridade mais alta que a lesma do tipo de postagem personalizada
Veja como você pode fazer isso:
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');
Agora, você terá duas maneiras de acessar seus filmes:
/movies/Back-To-The-Future
/films/Back-To-The-Future
Observe que eu não recomendo conectar add_custom_rewrite_rule
a init
ação à ação, pois ela será acionada com muita frequência. Este é apenas um exemplo. Um lugar melhor para aplicar a função seria na ativação do tema, na ativação do plug-in, talvez na ação save_post, etc. Dependendo do que você precisa fazer, talvez seja necessário acioná-la apenas uma ou poucas vezes.
Nesse ponto, convém atualizar os permalinks para o tipo de postagem personalizada para usar a ' /movies/
lesma ' . Por exemplo, se você navegar para /films/
, verá uma lista de todos os seus filmes, mas passar o mouse sobre o título revelará que a /movies/
lesma ainda está sendo usada.
Para ir um passo adiante, tecnicamente, você pode instalar um redirecionamento 301 para capturar todos os links /movies/
e redirecioná- /films/
los para as contrapartes deles , mas tudo depende do que você está tentando fazer.