Permalinks para categorías y subcategorías de WooCommerce

14 ene 2018, 02:02:41
Vistas: 18.5K
Votos: 2

Configuración

Estructura de permalinks deseada (solo estas estructuras existen para productos)

Producto 1: /tienda/categoria/subcategoria/producto1/
Producto 2: /tienda/categoria/producto2/

Ajustes de Vista de Productos en WooCommerce

Vista para base de tienda:     Mostrar categorías
Vista para categorías:        Mostrar productos

Productos

Los productos solo están marcados para una categoría O subcategoría

Ajustes de Permalinks

Ajustes normales:            /%categoria%/%nombrepost%/
Base para categorías:        tienda
Para productos:             /tienda/%categoria_producto%/

Archivos

Como hay más de 100 subcategorías, quiero usar un archivo para listar todos
los productos.

Intentos de solución

Con los siguientes intentos he logrado producir una Página de Producto funcional pero al hacerlo, también provoco un error 404 en la página de subcategoría. No recuerdo qué opción produce qué resultado.

  1. He probado diferentes ajustes de permalinks para la base de categorías de productos, incluyendo %categoria%/%categoria_producto%, %categoria%/%categoria_producto%/%nombrepost%, %categoria_producto%/%categoria_producto%, tienda/%categoria_producto%, tienda/%categoria_producto%/%nombrepost%, y todas esas combinaciones anteriores con terminación /. también
  2. He intentado intercambiar lo anterior con el ajuste de permalink base de tienda.
  3. He intentado cambiar los Ajustes de Vista de Productos para mostrar subcategorías en lugar de productos.
  4. He intentado crear páginas para las subcategorías mientras tenía una Página de Producto funcionando, pero la página de subcategoría sigue devolviendo un 404.
  5. He probado este intento de SO sin éxito.

¿Qué estoy haciendo mal o qué parte puedo reconfigurar para que esto funcione? Muy agradecido por cualquier pista, indicación o respuesta. ¡Gracias por leer esto!

1
Comentarios

Otra opción para obtener la estructura deseada sería utilizar el plugin "Premmerce Permalink Manager for WooCommerce" https://wordpress.org/plugins/woo-permalink-manager/

Dusty48 Dusty48
29 nov 2019 12:50:52
Todas las respuestas a la pregunta 1
0

Pude resolver esto con el siguiente código que genera rewrite_rules para cada subcategoría, lo cual es preferido durante la coincidencia ya que es más específico:

function wpse_291143_generate_taxonomy_rewrite_rules( $wp_rewrite ) {

    global $wp_rewrite;
    $base = "shop";

    $rules = array();
    $terms = get_terms( array( 'taxonomy' => 'product_cat', 'hide_empty' => false ));

    foreach($terms as $term) {
        $term_children = get_terms( array(
            'taxonomy' => 'product_cat',
            'parent' => intval($term->term_id),
            'hide_empty' => false
            )
        );
        if($term_children) {
            foreach ( $term_children as $term_child ) {
                $rules[$base . '/' . $term->slug . '/' . $term_child->slug . '/?$'] = 'index.php?product_cat=' . $term_child->slug;
            }
        }
    }

    $wp_rewrite->rules = $rules + $wp_rewrite->rules;
    return $wp_rewrite->rules;
}

add_action('generate_rewrite_rules', 'wpse_291143_generate_taxonomy_rewrite_rules');
15 ene 2018 23:45:02