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.

Problema del checkbox de aceptar en Contact Form 7

Uno de los gestores de formularios más usados en wordpress es Contact Form 7. Es fácil de manejar y más configurable de lo que a primera vista parece.

Sin embargo, a pesar de trabajar con las últimas actualizaciones del plugin, todavía hay que incluir algo de código para solucionar el problema del típico checkbox de aceptación de la nota legal.

Hasta ahora, el comportamiento es que no ejecuta la validación de los inputs obligatorios del formulario hasta que no aceptas la casilla. Por tanto, no aparece ningún mensaje de error hasta que, efectivamente, marcas como activado el input, por lo que puede dar lugar a error.

Para resolverlo, hay que escribir:

acceptance_as_validation: on

Dentro de configuración adicional, justo aquí, y de esta manera:

acceptance-on