Evitar enlaces permanentes numéricos en WordPress con esta función

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' );
    }
}
Lenguaje del código: PHP (php)

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.

¡MANTENME INFORMADO!

¡Gracias por tu interés en estar informado del próximo lanzamiento de mis cursos! 😎

¡No hago spam! Lee la política de privacidad para tener más información.

Deja una respuesta

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

*

*

DARÍO BALBONTÍN FERNÁNDEZ es el Responsable del tratamiento de los datos personales del usuario y le informa que estos datos serán tratados de conformidad con lo dispuesto en el Reglamento (UE) 2016/679 de 27 de abril (GDPR) y la Ley Orgánica 3/2018 de 5 de diciembre (LOPDGDD), por lo que se le facilita la siguiente información del tratamiento: Fin del tratamiento: mantener una relación comercial y el envío de comunicaciones sobre nuestros productos y servicios. Criterios de conservación de los datos: se conservarán mientras exista un interés mutuo para mantener el fin del tratamiento y cuando ya no sea necesario para tal fin, se suprimirán con medidas de seguridad adecuadas para garantizar la seudonimización de los datos o la destrucción total de los mismos.Comunicación de los datos: No se comunicarán los datos a terceros, salvo obligación legal. Derechos que asisten al usuario: Derecho a retirar el consentimiento en cualquier momento. Derecho de acceso, rectificación, portabilidad y supresión de sus datos y a la limitación u oposición al su tratamiento. Derecho a presentar una reclamación ante la Autoridad de control (agpd.es) si considera que el tratamiento no se ajusta a la normativa vigente. Datos de contacto para ejercer sus derechos: contacto@dariobf.com.