Evitar slugs duplicados en taxonomías personalizadas de WordPress

  • Autor Autor Pabie
  • Fecha de inicio Fecha de inicio
Pabie

Pabie

Gamma
Verificación en dos pasos activada
Verificado por Whatsapp
Verificado por Binance
Basicamente quiero prevenir que wordpress cree slugs duplicados (De taxonomias custom y tags).

Tengo taxonomias custom en WP, con nombres cambiados manualmente.
Por ejemplo:
taxonomia1 de slug, con nombre "pepe".
taxonomia2 de slug, con nombre "david"... etc.

En mis nuevas entradas sigo usando el slug original (taxonomia1, y taxonomia2) y quiero mantener ese slug con el nombre manual,
pero wordpress me crea taxonomia1-1 , taxonomia2-1 , de slugs y no es lo que quiero.

Alguien sabe como forzar a wordpress para que no cree slugs duplicados. Alguna funcion?
O que metodo para cambiar nombres taxonomias tiene sentido.

Gracias!
 
Basicamente quiero prevenir que wordpress cree slugs duplicados (De taxonomias custom y tags).

Tengo taxonomias custom en WP, con nombres cambiados manualmente.
Por ejemplo:
taxonomia1 de slug, con nombre "pepe".
taxonomia2 de slug, con nombre "david"... etc.

En mis nuevas entradas sigo usando el slug original (taxonomia1, y taxonomia2) y quiero mantener ese slug con el nombre manual,
pero wordpress me crea taxonomia1-1 , taxonomia2-1 , de slugs y no es lo que quiero.

Alguien sabe como forzar a wordpress para que no cree slugs duplicados. Alguna funcion?
O que metodo para cambiar nombres taxonomias tiene sentido.

Gracias!
Para evitar que WordPress genere slugs duplicados para tus taxonomías personalizadas, puedes utilizar el siguiente código en el archivo functions.php de tu tema o en un plugin personalizado:

PHP:
add_filter( 'wp_unique_term_slug', 'custom_unique_term_slug', 10, 4 );
function custom_unique_term_slug( $slug, $term, $taxonomy, $original_slug ) {
    // Verifica si el término está siendo creado o actualizado
    if ( ! $term_id = term_exists( $slug, $taxonomy ) ) {
        return $slug;
    }

    // Verifica si el slug es el mismo que el original
    if ( $original_slug === $slug ) {
        return $slug; // Devuelve el slug original
    }

    // Slug duplicado, agrega un sufijo para hacerlo único
    $index = 2;
    while ( term_exists( $slug . "-$index", $taxonomy ) ) {
        $index++;
    }

    return $slug . "-$index";
}

Este filtro personalizado wp_unique_term_slug evitará que se creen slugs duplicados para tus taxonomías personalizadas. Si detecta un slug duplicado, agregará un sufijo numérico para hacerlo único.

Recuerda que al cambiar los nombres de las taxonomías personalizadas, es importante mantener los slugs originales para evitar posibles conflictos. Con este código, podrás mantener tus slugs originales y evitar la creación de versiones duplicadas. ¡Espero que esta información te sea útil!
 
Atrás
Arriba