Cambiar la URL de un custom post en WordPress

Cambiar la URL de un custom post en WordPress

Cuando instalamos un tema en WordPress en muchos casos vienen con entradas personalizadas que tienen su propio nombre. Por ejemplo tenemos la sección “Portfolio”, o la sección “Testimonials”, etc. ya que suelen venir en inglés.

Esto hace que nuestra url sea de una forma similar a la siguiente:

http://www.miweb.com/portfolio

¿ Pero qué pasa si quiero que en mi url aparezca algo como miweb.com/mis-trabajos ? La solución es bastante sencilla y lo vamos a explicar a continuación.

Cambiar la URL de un custom post en WordPress

Para cambiar la url de un custom post en WordPress  debemos buscar en nuestro tema (generalmente en el archivo functions.php) una estructura como la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
add_action( 'init''create_post_type' );
function create_post_type() {
  register_post_type( 'acme_product',
      array(
          'labels' => array(
              'name' => __( 'Products' ),
              'singular_name' => __( 'Product' )
          ),
          'public' => true,
          'has_archive' => true
      )
  );
}

Este trozo de código lo que hace es decirle a WordPress que se va a crear un nuevo tipo de entrada para que aparezca en el menú de administración de WordPress. Por defecto, el nombre que coge la URL es el nombre del tipo de entrada con el que se crea.

Si cambiamos el nombre de tipo de entrada y ya tenemos entradas creadas nos va a crear un conflicto y va a romper nuestra web, además cambiarlo ahí implicaría cambiarlo en todas las líneas de código del tema que llaman a la url que se encarga de llevar a las páginas de esa sección (lo cual es una verdadera pérdida de tiempo). La solución a esto es añadir simplemente la línea ‘rewrite’ => array(‘slug’ => ‘nombre-que-queremos-en-la-url’) al array tal y como mostramos a continuación.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
add_action( 'init''create_post_type' );
function create_post_type() {
  register_post_type( 'acme_product',
      array(
          'labels' => array(
              'name' => __( 'Products' ),
              'singular_name' => __( 'Product' )
          ),
          'public' => true,
          'has_archive' => true,
          'rewrite' => array('slug' => 'mis-productos'// Añadimos esta línea
      )
  );
}

Para que los cambios se apliquen solo falta ir en nuestro panel de administración a Ajustes->Enlaces permanentes y guardar sin tocar nada para que vuelva a gestionar las redirecciones de las urls y ya empezará a funcionar.