Permalink-uri pentru categorii și subcategorii WooCommerce

14 ian. 2018, 02:02:41
Vizualizări: 18.5K
Voturi: 2

Configurare

Structura dorită pentru permalink-uri (doar aceste structuri există pentru produse)

Produs 1: /shop/categorie/subcategorie/produs1/
Produs 2: /shop/categorie/produs2/

Setări WooCommerce pentru vizualizarea produselor

Vizualizare pentru shopbase:     Afișează categorii
Vizualizare pentru categorii:   Afișează produse

Produse

Produsele sunt verificate doar pentru o categorie SAU subcategorie

Setări Permalink

Setări normale:       /%category%/%postname%/
Baza pentru categorii:   shop
Pentru produse:          /shop/%product_cat%/

Arhive

Deoarece există peste 100 de subcategorii, doresc să folosesc o arhivă pentru 
a lista toate produsele.

Încercări de rezolvare

Cu încercările de mai jos am reușit să obțin o Pagină de produs funcțională, dar în același timp am primit eroarea 404 pentru pagina de subcategorie. Nu îmi amintesc exact care opțiune a produs ce rezultat.

  1. Am încercat diferite setări de permalink pentru baza categoriilor de produse, inclusiv %category%/%product_cat%, %category%/%product_cat%/%postname%, %product_cat%/%product_cat%, shop/%product_cat%, shop/%product_cat%/%postname%, și toate combinațiile de mai sus cu un slash final /.
  2. Am încercat să schimb setările de mai sus cu setarea de bază pentru shop.
  3. Am încercat să schimb setările de vizualizare a produselor pentru a afișa subcategorii în loc de produse.
  4. Am încercat să creez pagini pentru subcategorii în timp ce aveam o pagină de produs funcțională, dar pagina de subcategorie tot returna eroarea 404.
  5. Am încercat această soluție de pe Stack Overflow fără succes.

Ce fac greșit sau ce parte pot reconfigura pentru a face acest lucru să funcționeze? Sunt foarte recunoscător pentru orice indiciu, sugestie sau răspuns. Mulțumesc pentru citire!

1
Comentarii

O altă opțiune pentru a obține structura dorită ar fi utilizarea plugin-ului "Premmerce Permalink Manager for WooCommerce" https://wordpress.org/plugins/woo-permalink-manager/

Dusty48 Dusty48
29 nov. 2019 12:50:52
Toate răspunsurile la întrebare 1
0

Am reușit să rezolv această problemă cu următorul cod care generează reguli de rescriere (rewrite_rules) pentru fiecare subcategorie, care sunt preferate în timpul potrivirii deoarece sunt mai specifice:

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 ian. 2018 23:45:02