Come personalizzare la visualizzazione per le pagine archivio e categoria prodotto in WooCommerce?

22 mar 2014, 18:03:25
Visualizzazioni: 18.1K
Voti: 3

Finora

Ciao, capisco che la mia domanda sia molto simile a una domanda comune su 'woocommerce'.

Ho utilizzato vari hook e filtri di WooCommerce, creando copie dei file template originali di WooCommerce nel mio child theme in una cartella chiamata woocommerce/.

Questo funziona e sono in grado di apportare le modifiche che integrano WooCommerce nel mio tema.

Quello che sto cercando di fare

WooCommerce utilizza archive-product.php per visualizzare le categorie di prodotti. Utilizza anche questo template per visualizzare i prodotti della categoria.

Vorrei stilizzare la pagina prodotti in modo molto diverso dalla pagina categoria e creare un altro template di archivio che mostri i prodotti di una categoria

Sto pensando che utilizzare un nuovo template products-product.php sarebbe la mia migliore opzione. Sono molto interessato a imparare sempre di più sul plug-in, quindi sto cercando di evitare soluzioni rapide con CSS e imparare a usare i file template e gli hook.

Consigli o indicazioni nella giusta direzione sarebbero molto apprezzati.

9
Commenti

Hai provato un plugin page builder? Puoi creare una pagina archive-products personalizzata e visualizzare i prodotti come preferisci. Ci sono alcuni page builder gratuiti molto validi (come: http://siteorigin.com/page-builder/)

item251 item251
22 mar 2014 18:24:27

Questa domanda è stata messa in attesa perché fuori tema. Qualcuno potrebbe spiegarmi brevemente il motivo? Ho scoperto una risposta molto semplice che è specifica per il plugin e non riguarda la programmazione generale. Vedo molte domande molto simili a questa sul sito. Grazie

JohnLion JohnLion
22 mar 2014 20:51:37

Hai ragione, ci sono molte domande simili a questa che non sono considerate fuori tema, ma in generale la regola è »non gestiamo (..) domande relative a plugin e temi di terze parti« come indicato nella pagina di aiuto sugli argomenti validi. Il motivo per cui questa è stata messa in attesa è che woocommerce è chiaramente un plugin di terze parti. A proposito, per favore non forzare la tua domanda facendo modifiche irrilevanti/minori solo per mantenerla in coda.

Nicolai Grossherr Nicolai Grossherr
22 mar 2014 23:17:40

Mi scuso, dal modo in cui è stato sottinteso ho pensato che fosse più una questione di come ho formulato la domanda. Potresti dirmi se questa domanda verrà rimossa? Penso che dovrebbe, considerando che non porta da nessuna parte e le risposte sono fuorvianti rispetto alla soluzione effettiva. Grazie per avermi spiegato riguardo alla domanda. Ora lo so.

JohnLion JohnLion
22 mar 2014 23:39:38

Puoi sempre rimuovere le tue domande da solo cancellandole. Non sono sicuro al 100% di come venga gestito se la domanda rimane, ma è in attesa, penso che se ci sono risposte rimarrà, almeno per un po'. Ma, anche se non l'ho testato, sono abbastanza sicuro che la mia prima risposta sia una soluzione sufficiente per questo problema. A proposito, ho aggiornato la mia risposta con informazioni per te su come farlo in modo più specifico per WooCommerce.

Nicolai Grossherr Nicolai Grossherr
22 mar 2014 23:47:04

A proposito, scusa se ti ho accusato ingiustamente.

Nicolai Grossherr Nicolai Grossherr
22 mar 2014 23:59:12

Fantastico @ialocin, grazie per aver dedicato del tempo a farlo. Ho scoperto che la pagina della categoria del prodotto veniva gestita in taxonomy-product_cat.php. Fondamentalmente chiama il template archive-product.php. Quindi, ho semplicemente modificato quel file per caricare il mio template personalizzato. Era uno degli unici file che non avevo aperto. Concordo che la soluzione che hai proposto sia un metodo perfetto per fare ciò che volevo e sono sicuro che mi sarà utile in futuro. Oltre ad essere un'introduzione a template_include. Nessun rancore. Sto solo imparando a usare correttamente il forum e a far parte della community di WordPress. Saluti

JohnLion JohnLion
24 mar 2014 01:43:50

Questa è una domanda su WordPress che si applica anche ai plugin WP. La risposta è codice WordPress. Ci sono risposte migliori su WordPress là fuori, ma poiché è stata chiusa, la community non può aggiungere nulla. Cosa si è guadagnato chiudendola?

Jon Jon
5 giu 2015 11:46:42

Questa politica sugli argomenti off-topic è davvero fastidiosa e francamente stupida. WordPress è una piattaforma open-source: ci sono molte persone che lavorano con WooCommerce. Quando vogliamo modificarlo, romperlo, alterarlo, StackExchange dovrebbe essere lì per aiutarci.

Dave Hilditch Dave Hilditch
9 set 2015 19:20:18
Mostra i restanti 4 commenti
Tutte le risposte alla domanda 1
3

Generalmente, puoi dire a WordPress di caricare un template diverso. Gli approcci più comuni utilizzano l'hook template_redirect o template_include. È preferibile utilizzare template_include come descritto in questo articolo. Di seguito un esempio su come procedere:

Codice:

// carica il template dell'archivio categorie di WooCommerce
add_filter( 'template_include', 'wpse138858_woocommerce_category_archive_template' );
function wpse138858_woocommerce_category_archive_template( $original_template ) {
    // carichiamo il template condizionalmente,
    // ma solo se siamo effettivamente in un archivio categorie di WooCommerce
    if ( is_product_category() ) {
        // devi prima creare il template che vuoi utilizzare qui
        return get_template_directory().'/woocommerce-category-archive.php';
    } else {
        return $original_template;
    }
}

Informazioni aggiuntive:

Note:

  • non testato
  • Potrebbe esserci un modo più specifico per farlo con WooCommerce, a seconda di come gestiscono il caricamento dei template. Per questo devi approfondire la ricerca e/o esaminare il codice di WooCommerce.

Modifica:

Quello che stai cercando - se vuoi farlo nel modo di WooCommerce - è la funzione wc_get_template_part() - precedentemente, prima di WC 2.1, woocommerce_get_template_part(), ora deprecata. Ho dato una risposta tempo fa su come utilizzare quest'ultima, puoi fare lo stesso per la funzione rinominata - la funzionalità è la stessa - di conseguenza. La risposta riguarda ovviamente l'uso diretto della funzione, nel tuo caso probabilmente vuoi e dovresti utilizzare l'hook corrispondente wc_get_template_part. Con queste informazioni dovresti essere in grado di farlo nel modo corretto per WooCommerce.

22 mar 2014 18:26:46
Commenti

Grazie per il consiglio. Sono ancora alla ricerca di una soluzione più specifica per WooCommerce, ma questa potrebbe funzionare. Grazie ancora @ialocin

JohnLion JohnLion
22 mar 2014 19:27:05

Come dice @RobertWilkins: »Questo codice ha funzionato perfettamente per me e ha posto fine a diverse ore di grattacapi... Grazie mille!!!«

Nicolai Grossherr Nicolai Grossherr
11 giu 2014 23:08:51

@RobertWilkins Grazie per il suggerimento, ma questa non è una modifica praticabile, quindi l'ho aggiunta come commento per te.

Nicolai Grossherr Nicolai Grossherr
11 giu 2014 23:17:29