Permalink per Categorie e Sottocategorie WooCommerce
14 gen 2018, 02:02:41
Visualizzazioni: 18.5K
Voti: 2
Configurazione
Struttura dei permalink desiderata (solo queste strutture esistono per i prodotti)
Prodotto 1: /shop/categoria/sottocategoria/prodotto1/
Prodotto 2: /shop/categoria/prodotto2/
Impostazioni Visualizzazione Prodotti WooCommerce
Visualizzazione per shopbase: Mostra categorie
Visualizzazione per categorie: Mostra prodotti
Prodotti
I prodotti sono verificati solo per una categoria OPPURE sottocategoria
Impostazioni Permalink
Impostazioni normali: /%category%/%postname%/
Base per categorie: shop
Per prodotti: /shop/%product_cat%/
Archivi
Poiché ci sono oltre 100 sottocategorie, voglio utilizzare un archivio per elencare tutti i prodotti.
Tentativi di Soluzione
Con i seguenti tentativi sono riuscito a ottenere una Pagina Prodotto
funzionante, ma nel farlo, ho anche causato un errore 404
nella pagina della sottocategoria. Non ricordo quale opzione produce quale risultato.
- Ho provato diverse impostazioni di permalink per la base delle categorie di prodotti, tra cui
%category%/%product_cat%
,%category%/%product_cat%/%postname%
,%product_cat%/%product_cat%
,shop/%product_cat%
,shop/%product_cat%/%postname%
e tutte le combinazioni sopra citate con anche una terminazione/.
- Ho provato a scambiare le impostazioni sopra con la base dei permalink dello shop.
- Ho provato a cambiare le Impostazioni di Visualizzazione Prodotti per mostrare sottocategorie anziché prodotti.
- Ho provato a creare pagine per le sottocategorie mentre avevo una Pagina Prodotto funzionante, ma la pagina della sottocategoria restituiva comunque un
404
. - Ho provato questo tentativo su Stack Overflow senza successo.
Cosa sto sbagliando o quale parte posso riconfigurare per far funzionare tutto? Sono molto grato per qualsiasi suggerimento, indicazione o risposta. Grazie per aver letto!

Anton Flärd
49
Commenti
Tutte le risposte alla domanda
1
0
Sono riuscito a risolvere questo problema con il seguente codice che genera delle rewrite_rules per ogni sottocategoria, che viene preferita durante il matching poiché è più specifica:
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 gen 2018 23:45:02
Domande correlate