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.

  1. 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 /.
  2. Ho provato a scambiare le impostazioni sopra con la base dei permalink dello shop.
  3. Ho provato a cambiare le Impostazioni di Visualizzazione Prodotti per mostrare sottocategorie anziché prodotti.
  4. Ho provato a creare pagine per le sottocategorie mentre avevo una Pagina Prodotto funzionante, ma la pagina della sottocategoria restituiva comunque un 404.
  5. 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!

1
Commenti

Un'altra opzione per ottenere la struttura desiderata sarebbe utilizzare il plugin "Premmerce Permalink Manager for WooCommerce" https://wordpress.org/plugins/woo-permalink-manager/

Dusty48 Dusty48
29 nov 2019 12:50:52
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');
15 gen 2018 23:45:02