Sí, esto es posible, pero si el complemento está creando un tipo de publicación personalizada utilizando el rewrite => array('slug' => 'post_type')
parámetro, entonces no es probable que pueda reemplazar la babosa.
Cada vez que se crean tipos de publicaciones personalizadas, las reglas de reescritura de URL se escriben en la base de datos. Dependiendo de qué acción desencadena la creación del tipo de publicación personalizada (como la acción init ), WordPress vaciará las reglas de reescritura y restaurará las babosas del tipo de publicación personalizada independientemente de los cambios que intente realizar.
Dicho esto, puede proporcionar babosas personalizadas para los tipos de publicaciones personalizadas. El siguiente ejemplo supone que tiene un tipo de publicación personalizado movies
y que está intentando cambiar la /movies/
babosa a /films/
.
Para completar, aquí está la función básica utilizada para definir el movies
tipo de publicación personalizada. El complemento al que hace referencia debería hacer algo como esto:
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');
Puede modificar la tabla de opciones proporcionando sus propias reglas personalizadas basadas en el tipo de publicación existente.
Básicamente, haremos esto:
- Tome el conjunto de reglas existente y luego escriba el nuestro con nuestras propias babosas personalizadas
- Otorgue a la nueva regla una prioridad más alta que la babosa del tipo de publicación personalizada
Así es como puedes hacer esto:
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');
Ahora, tendrá dos formas de acceder a sus películas:
/movies/Back-To-The-Future
/films/Back-To-The-Future
Tenga en cuenta que no recomiendo conectarlo add_custom_rewrite_rule
a la init
acción, ya que se disparará con demasiada frecuencia. Esto es solo un ejemplo. Un mejor lugar para aplicar la función sería la activación del tema, la activación del complemento, tal vez la acción save_post, etc. Dependiendo de lo que necesite hacer, es posible que solo necesite activarlo una o varias veces.
En este punto, es posible que desee considerar actualizar los enlaces permanentes para el tipo de publicación personalizada para usar el ' /movies/
slug ' . Por ejemplo, si navega hacia /films/
, verá una lista de todas sus películas, pero al pasar el cursor sobre el título, se revelará que la /movies/
babosa todavía se está utilizando.
Para ir un paso más allá, técnicamente podría instalar una redirección 301 para atrapar todos los enlaces /movies/
para redirigir a su /films/
contraparte, pero todo esto depende de lo que intente hacer.