blog webempresa

Eliminar categoría y producto de los enlaces permanentes en WooCommerce

por | Oct 14, 2022 | WooCommerce

Quitar base de Categorias y Producto de Enlaces Permanentes en WooCommerce

Uno de los aspectos que suelen tomarse en cuenta cuando se desea optimizar el posicionamiento de una pagina es la estructura que poseen sus enlaces, Desde WordPress tenemos la capacidad de cambiar dicha estructura por medio de varias etiquetas en WordPress que le dan formato a la URL además de hacerla mucho mas estética visualmente.

Sin embargo dependiendo de que tan concreta queremos que sean nuestras URLs hay términos que conforman la estructura de nuestros enlaces, los cuales no los podemos retirar o al menos no podemos hacerlo desde las opciones convencionales que podemos encontrar desde los ajustes de WordPress en los enlaces permanentes.

En este caso hablaremos de los términos base que se colocan de forma arbitraria en los enlaces de las categorías y los productos en WooCommerce y cómo podemos retirarlos para hacer mucho mas concretas nuestras URLs.

  ¿Que son las bases de las categorías en WooCommerce?


Cada categoría en WooCommerce creada independientemente del tipo de post que estemos trabajando sean entradas o productos siempre tendrá una base definida, por ejemplo.

base categorías woocommerce

Para mis entradas he creado una categoría “Noticias” y al visitar la pagina correspondiente a la categoría podemos apreciar que mi URL contiene como base el termino “Categoria”.

Este termino podemos cambiarlo por cualquier otra palabra que queramos desde las opciones de Ajustes-> Enlaces permanentes.

cambiar enlace permanente en WooCommerce

Sin embargo este no es el caso, queremos es que no aparezca nada en su lugar y que en nuestra URL solo aparezca el termino con el que fue definida la categoría el cual es “Noticias”.

  Quitar base de las categorías en las entradas


Desde Yoast SEO tenemos una opción bastante concreta que nos ayuda a eliminar el category de la URL de WordPress, para ello vamos a las opciones SEO-> Apariencia en el buscador pestaña “Taxonomias” y al hacer scroll hacia abajo encontraremos la siguiente opción.

eliminar category WordPress

Al colocarla como “Quitar” y guardar cambias basta para ver el resultado.

categoría del slug de las entradas de WordPress

Cabe destacar que este ajuste solo eliminar la categoría del slug de las entradas de WordPress, no es valido para otros tipos de post ya sean personalizados (Custom post types) o productos.

  Quitar base de las categorías del slug en productos de WooCommerce por medio de codigo


Para los productos de Woocommerce he creado un producto de prueba y le he asignado una categoría llamada “Audifonos” por defecto al igual que la base de las categorías de las entradas, podemos cambiar el termino que corresponde para las categorías de los productos o por defecto se agregara el termino “categoria-producto” en el slug de WooCoommerce.

Vista de la URL de la categoría creada

slug creado en WooCommerce

Configuración de los enlaces permanentes

configurar enlaces permanentes en WooCommerce

Considerando que la opción antes vista de Yoast SEO no aplica a otros post types sino solo a las entradas vamos a utilizar el siguiente código que nos ayudara a eliminar la base de las categorías de WooCommerce en los productos.

Por medio de la edición del archivo functions.php que esta ubicado en nuestra cuenta de hosting dentro de nuestro cPanel / WePanel en la ruta Administrador de archivos -> public_html -> wp-content -> Themes -> Tu_Tema (se recomienda que sea en un tema hijo de WordPress para no perder ajustes tras una actualización en el tema principal).

En Cpanel

archivos cpanel

En WePanel

archivos wepanel

Por medio de un plugin que nos permite agregar snippets en WordPress de forma aislada códigos específicos llamado Code Snippets:

Code Snippets

El código en cuestión que vamos a agregar es el siguiente:

add_filter('request', function( $vars ) {
    global $wpdb;

    if(isset($vars['error'])){
        $lastVar = basename($_SERVER['REQUEST_URI']);
        $vars['attachment'] = $lastVar;
    }
   if( ! empty( $vars['pagename'] ) || ! empty( $vars['category_name'] ) || ! empty( $vars['name'] ) || ! empty( $vars['attachment'] ) ) {
      $slug = ! empty( $vars['pagename'] ) ? $vars['pagename'] : ( ! empty( $vars['name'] ) ? $vars['name'] : ( !empty( $vars['category_name'] ) ? $vars['category_name'] : $vars['attachment'] ) );
      $exists = $wpdb->get_var( $wpdb->prepare( "SELECT t.term_id FROM $wpdb->terms t LEFT JOIN $wpdb->term_taxonomy tt ON tt.term_id = t.term_id WHERE tt.taxonomy = 'product_cat' AND t.slug = %s" ,array( $slug )));
      if( $exists ){
         $old_vars = $vars;
         $vars = array('product_cat' => $slug );
         if ( !empty( $old_vars['paged'] ) || !empty( $old_vars['page'] ) )
            $vars['paged'] = ! empty( $old_vars['paged'] ) ? $old_vars['paged'] : $old_vars['page'];
         if ( !empty( $old_vars['orderby'] ) )
            $vars['orderby'] = $old_vars['orderby'];
         if ( !empty( $old_vars['order'] ) )
            $vars['order'] = $old_vars['order']; 
      }
   }
   return $vars;
});

add_filter('term_link', 'term_link_filter', 10, 3);
function term_link_filter( $url, $term, $taxonomy ) {
    $url=str_replace("/./","/",$url);
     return $url;
}

Ademas de agregar el código antes compartido es necesario que hagamos un pequeño ajuste a nuestros enlaces permanentes de WooCommerce, en lugar del termino “categoria-producto” vamos a colocar un punto “.” de la siguiente manera.

modificar enlace permanente en WooCommerce

Esto hará que el filtro que esta incluido en el código tome el punto y oculte por completo lo que correspondería incluir en la URL de la categoría, de esta manera tendremos el siguiente resultado.

slug en WooCommerce sin producto

  Quitar “Categoría” y “Producto” del enlace de WooCommerce por medio de plugin


Hemos podido retirar la base de las categorías en WooCommerce de los productos de forma satisfactoria, sin embargo tenemos otro termino del que nos tenemos que encargar y en este caso es el enlace personalizado del producto de WooCommerce.

La base por defecto se muestra de la siguiente forma, añadiendo el termino “producto” al enlace como tal.

La meta en este caso es que nos muestre una estructura donde la lectura sea la siguiente

  • Nombre del sitio
  • Categoria del producto
  • Nombre del producto

Aunque quisiéramos solo agregar el termino de la categoría al enlace del producto el sistema de forma automática siempre agregara el termino “producto” al enlace

Para solucionar esto de una forma rápida y efectiva vamos a instalar el plugin llamado “Premmerce Permalink Manager for WooCommerce”

Premmerce Permalink Manager for WooCommerce

Una vez instalado el plugin vamos a tener disponible una nueva opción en nuestro menu lateral en el panel de administración llamado “Premmerce”; desde la opción “Gestor de enlaces permanentes” vamos a encontrar lo siguiente.

Categorías

Tendremos la opción de dejar la configuración base de Woocommerce o establecer cómo serán mostrados los enlaces de las categorías si con su slug de WordPress sin base o la ruta completa, dicha ruta completa hace referencia a cuando tenemos categorías padres e hijas.

configuración predeterminada slug WooCommerce

Productos

Al igual que con las categorías podremos dejar la configuración base de Woocommerce o en su lugar solo utilizar el slug del producto sin el termino “producto”.

También podremos configurar que la estructura del enlace del producto añada la categoría padre o qué contenga tanto la categoría padre como las categorías hijas.

categoría padre slug WooCommerce

Hay otras opciones que estas visibles pero desactivadas ya que solo están disponibles en la versión premium del plugin, al guardar cambios vamos a validar que tanto la URL de nuestra categoría de producto “Audifonos” y la URL de nuestro producto de prueba han tomado los cambios requeridos.

Vamos a echarle un vistazo a cómo quedo el enlace final de nuestro producto de prueba.

eliminar producto categoría WooCommerce

  Conclusiones


Hemos podido ver como retirar la base de las categorías de categorías y productos en WooCommerce, además de poder retirar el termino “producto” de los enlaces individuales a cada producto, todo con el fin de hacer mucho mas concretas y estéticamente mas visibles nuestros enlaces permanentes.

Es necesario tener muy en cuenta que hay elementos que podrían ya haber tomado un enlace permanente en especifico, por ejemplo una pagina anteriormente creada con el slug “Audifonos” puede entrar en conflicto con el slug de la categoría ya creada, es por ello que es recomendable además de validar no repetir slugs entre taxonomías, entradas y paginas, el definir la estructura de los enlaces permanentes debe ser realizado al comienzo de cualquier proyecto a desarrollar.

Si deseas conocer mas sobre cómo crear tu tienda en Woocommerce con todos los trucos y secretos que ya hemos presentado en artículos anteriores te invito a echarle un vistazo a los siguientes enlaces de interés.

¿Te ha resultado útil este artículo?

Promo abril