Mostrare categorie e sottocategorie con nome e descrizione in category.php

15 set 2014, 22:25:02
Visualizzazioni: 15.1K
Voti: 1

Ho il seguente problema per un mio cliente. Qualcuno può suggerire una possibile soluzione?

Questo sito web ha Categorie e Sottocategorie

Cat1
-Subcat1
-Subcat2
-Subcat3

Cat2
-Subcat1
-Subcat2
-Subcat3

CIÒ DI CUI HO BISOGNO:

  • Quando clicco su Cat1 o Cat2, ho bisogno di visualizzare qualcosa del genere:
  • Ripetere questa azione finché la categoria e la sottocategoria hanno post! (importante)

Dovrebbe apparire così

Dopo aver cliccato su queste sottocategorie, devo essere in grado di generare una pagina con tutti i post di queste sottocategorie.

PS: Sarebbe bello se potessi spiegarmi come fare. E come posso inserire le variabili nel DIV del mio category.php (get_the_title; Get_the desciption..)

3
Commenti

Quindi vuoi che la categoria genitore (Cat1/Cat2) ti porti a una pagina come quella nello screenshot sopra, ed è solo quando viene cliccata una sottocategoria che si passa a un elenco di articoli? Ho capito bene? Puoi modificare il category.php in modo che non usi get_template_part per caricare un loop e invece usi un file personalizzato. Usa un'istruzione if che caricherà il loop solo se si tratta di una sottocategoria. Questo potrebbe aiutarti: http://rachievee.com/2014/09/06/wp-tutorial-how-to-apply-a-template-to-subcategories/

RachieVee RachieVee
16 set 2014 22:49:41

Prova anche questo argomento per elencare le sottocategorie sotto le categorie genitore: http://wordpress.stackexchange.com/questions/13485/list-all-subcategories-from-category

RachieVee RachieVee
16 set 2014 22:59:16

Questa domanda è stata risolta con successo? Se è così, per favore accetta la risposta, o pubblica e accetta una risposta tu stesso, in modo da poter mantenere il sito ordinato. Grazie.

Andy Macaulay-Brook Andy Macaulay-Brook
8 ago 2016 00:09:30
Tutte le risposte alla domanda 1
1

Da quello che ho capito, c'è una lista di categorie genitore e le sottocategorie, che funzionano come un menu. Per il tuo primo screenshot:

Cat1 -Subcat1 -Subcat2 -Subcat3

Cat2 -Subcat1 -Subcat2 -Subcat3

Assumendo che hai solo due livelli di categorie, useresti questo codice per mostrare le tue categorie. Nota che puoi usarlo al di fuori del loop:

<ul class="category-sidebar">   
    <?php 
        $get_parent_cats = array(
            'parent' => '0' //ottieni solo le categorie di livello superiore
        ); 

        $all_categories = get_categories( $get_parent_cats ); //ottieni le categorie genitore

        foreach( $all_categories as $single_category ){
            //per ogni categoria, ottieni l'ID
            $catID = $single_category->cat_ID;

            echo '<li><a href=" ' . get_category_link( $catID ) . ' ">' . $single_category->name . '</a>'; //nome e link della categoria
            $get_children_cats = array(
                'child_of' => $catID //ottieni le sottocategorie di questo genitore usando la variabile catID
            );

            $child_cats = get_categories( $get_children_cats ); //ottieni le sottocategorie della categoria genitore
            echo '<ul class="children">';
                foreach( $child_cats as $child_cat ){
                    //per ogni sottocategoria, ottieni l'ID
                    $childID = $child_cat->cat_ID;

                    //per ogni sottocategoria, mostra il link e il nome
                    echo '<a href=" ' . get_category_link( $childID ) . ' ">' . $child_cat->name . '</a>';

                }
            echo '</ul></li>';
        } //fine della logica delle categorie ?>
</ul><!--fine di category-sidebar-->

Ora per il tuo secondo screenshot, presumo che quando clicchi su una categoria genitore dal menu sopra, mostrerà una pagina come quella con ogni sottocategoria e la sua descrizione.

Fai riferimento al tutorial che ho lasciato nei commenti per usare i condizionali in category.php, fondamentalmente quello che farai nell'archive è verificare se sta caricando una categoria genitore o una sottocategoria. Se è una sottocategoria, mostra un loop di post, se è un genitore, mostra la pagina delle sottocategorie con le descrizioni. Ecco come apparirebbe il codice per le sottocategorie e le loro descrizioni nel loop:

       <?php 
        //per questa categoria in una pagina archive, ottieni l'ID
        $thisID = get_query_var('cat');

        $get_children_cats = array(
            'child_of' => $thisID //ottieni le sottocategorie di questo genitore usando la variabile thisID
        );

        $child_cats = get_categories( $get_children_cats ); //ottieni le sottocategorie di questa categoria genitore

        foreach( $child_cats as $child_cat ){
            //per ogni sottocategoria, ottieni l'ID
            $childID = $child_cat->cat_ID;

            //per ogni sottocategoria, mostra il link, il nome e la descrizione
            echo '<div class="child-wrap"><h2><a href=" ' . get_category_link( $childID ) . ' ">' . $child_cat->name . '</a></h2><br/>';
            echo '<p>' . $child_cat->category_description . '</p></div>';
        } //fine della logica delle categorie ?>

Mi rendo conto che è molto codice ma sembra che tu stia chiedendo di fare più cose, l'unico compito che devi fare tu è far sì che l'archive mostri la lista di post o la pagina nel secondo screenshot. Spero che questo ti aiuti meglio delle risorse nei commenti che ho fornito prima. Buona fortuna!

17 set 2014 19:37:11
Commenti

Ho anche scritto un tutorial su questo argomento. Dai un'occhiata https://www.cloudways.com/blog/get-categories-and-subcategories-in-wordpress/

Owais Alam Owais Alam
11 ott 2017 12:09:04