Si no incluimos un título antes de guardar el artículo como borrador o publicarlo, WordPress añade automáticamente el post_name (o slug) numérico basado en el id del artículo. Sabes a qué me refiero, ¿verdad?

El caso es que, en algunas ocasiones nos olvidamos de editar el slug antes de publicar nuestro artículo y claro, queda tremendamente feo un slug numérico (y no es que ayude mucho al SEO, por ejemplo).

Por eso, he creado esta función, que se encarga de reescribir el slug en el momento que guardamos o publicamos el post:

/*
*	Rewrite post_name (slug) before publish it using
*	WordPress function.
*/
// initial hook
add_action( 'save_post', 'rewrite_post_name' );
 
function rewrite_post_name( $post_id ) {
 
    // verify post is not a revision
    if ( ! wp_is_post_revision( $post_id ) ) {
        // unhook this function to prevent infinite looping
        remove_action( 'save_post', 'rewrite_post_name' );
 
        $post_name = get_post_meta ( $post_id, 'post_name' );
        $post_id2 = $post_id . "-2";
 
        if( $post_name === $post_id || $post_name === $post_id2 ){
	    // update the post slug
	    wp_update_post( array(
	        'ID' => $post_id,
	        'post_name' => '' // Rewrite based on Post Title
	    ));
	}
 
        // re-hook this function
        add_action( 'save_post', 'rewrite_post_name' );
    }
}

Explicándola paso a paso, tendríamos algo tal que así:

Esta función la puedes utilizar en tu instalación de WordPress copiándola en el functions.php de tu tema.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *