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.
- 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/.
- Am încercat să schimb setările de mai sus cu setarea de bază pentru shop.
- Am încercat să schimb setările de vizualizare a produselor pentru a afișa subcategorii în loc de produse.
- 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
. - 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!

Anton Flärd
49
Comentarii
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');

Anton Flärd
49
15 ian. 2018 23:45:02
Întrebări similare