El slug, el rewrite y el 404 not found en wordpress

Cuando desarrollamos un theme en wordpress a veces nos conviene crear un custom post type para distinguir el contenido de las entradas y ampliar la información a través del número de campos. Otras veces, simplemente, compramos un theme en wordpress que viene con un custom post predeterminado, el clásico portfolio, pero el uso que le queremos dar será distinto del viene predeterminado.

Uno de los pequeños inconvenientes es el nombre por defecto que introduce dentro de la URL cada custom post y que, normalmente, es lo que más nos molesta por temas de SEO o lógica en la estructura de los enlaces, para eso, desde functions.php existe la variable ‘rewrite’.

Simplemente hay que localizar dónde se registra el custom post y añadirle al final

'rewrite' => array('slug' => 'profesor'),

donde el slug es el término que identificará a la categoría del custom post o sustituirá a portfolio, según el caso.

Os dejo un ejemplo completo

add_action( 'init', 'create_post_type_profesores' );
function create_post_type_profesores() {
register_post_type( 'profesores',
array(
'labels' => array(
'name' => __( 'Profesorado' ),
'singular_name' => __( 'Profesor' ),
'singular_label' => __( 'profesor' ),
'all_items' => __('Profesorado'),
'add_new_item' => __('Añadir un profe nuevo'),
'add_new' => __('Nuevo profe'),
'edit_item' => __('Editar profesor')
),
'public' => true,
'has_archive' => true,
'capability_type' => 'post',
'hierarchical' => true,
'query_var' => true,
'menu_position' => 5,
'menu_icon' => get_stylesheet_directory_uri() . '/images/profesor_icon.png',
'rewrite' => array('slug' => 'profesor'),
'supports' => array('title','editor','thumbnail')
)
);

}
Hay que recordar que el nuevo nombre del slug no puede estar previamente en la página, si no, alterará el funcionamiento y mostrará error 404 en la página detalle de cada post con esa categoría.