Come visualizzare un elenco di categorie

8 feb 2014, 09:25:19
Visualizzazioni: 60.6K
Voti: 3

Sto cercando di impostare un elenco di categorie con link cliccabili per ciascuna categoria. Ho dato un'occhiata a:

e non sono sicuro dove inserire il codice o come accedervi nella pagina.

Capisco abbastanza bene il PHP - è piuttosto semplice, sono solo relativamente nuovo con WordPress e ho bisogno di aiuto per l'implementazione.

1
Commenti

Incorpora il codice che hai ottenuto dal link sopra in una funzione e aggiungilo a functions.php, poi usa quella funzione dove vuoi utilizzando hook, shortcode o nel file template.

gmatta gmatta
4 gen 2019 10:20:40
Tutte le risposte alla domanda 5
0

Ti mostrerò come visualizzare un elenco di categorie in WordPress e anche come evidenziare la categoria attiva, guarda il codice qui sotto:

<?php
// Ottieni l'oggetto corrente della query
$term    = get_queried_object();
$term_id = ( isset( $term->term_id ) ) ? (int) $term->term_id : 0;

$categories = get_categories( array(
    'taxonomy'   => 'category', // Tassonomia da cui recuperare i termini. Vogliamo 'category'. Nota che questo parametro è di default 'category', quindi puoi ometterlo
    'orderby'    => 'name',
    'parent'     => 0,
    'hide_empty' => 0, // cambia in 1 per nascondere le categorie senza alcun articolo
) );
?>

<ul>
    <?php
    foreach ( $categories as $category ) 
    {
        $cat_ID        = (int) $category->term_id;
        $category_name = $category->name;

        // Quando visualizzi una categoria specifica, assegna la classe [active]
        $cat_class = ( $cat_ID == $term_id ) ? 'active' : 'not-active';

        // Preferisco non mostrare la categoria [uncategorized]
        if ( strtolower( $category_name ) != 'uncategorized' )
        {
            printf( '%3$s',
                esc_attr( $cat_class ),
                esc_url( get_category_link( $category->term_id ) ),
                esc_html( $category->name )
            );
        }
    }
    ?>
</ul>

Note sul codice sopra:

get_queried_object() recupera l'oggetto attualmente interrogato. Per esempio:

  • se sei su un singolo articolo, restituirà l'oggetto post
  • se sei su una pagina, restituirà l'oggetto page
  • se sei su una pagina archivio, restituirà l'oggetto post type
  • se sei su un archivio categoria, restituirà l'oggetto categoria
  • se sei su un archivio autore, restituirà l'oggetto autore
  • ecc.

Ma ci sono alcune implicazioni quando usi get_queried_object(), non dovresti aspettarti che restituisca un oggetto post type anche quando is_post_type_archive() è vero. Controlla per maggiori informazioni.

Inoltre, nota che get_queried_object() è un wrapper per $wp_query->get_queried_object(), quindi restituisce un tipo di dato WP object.

get_categories()

get_categories() recupera una lista di oggetti categoria. Attualmente accetta solo un parametro - $args. Il parametro $args specifica una lista di argomenti che dovrebbero essere usati per recuperare le categorie. Vedi get_terms() per opzioni aggiuntive.

Tuttavia, per ottenere le categorie per un articolo specifico ecco una semplice funzione che ho scritto: Come ottenere l'elenco delle categorie per un articolo

4 gen 2019 09:25:14
0

Come indicato nel thread WPSE linkato e nella risposta accettata, il codice è (copiato e incollato):

$categories =  get_categories('child_of=31');  
foreach  ($categories as $category) {
    // Mostra le informazioni della sottocategoria usando i valori di $category come $category->cat_name
    echo '<h2>'.$category->name.'</h2>';
    echo '<ul>';

    foreach (get_posts('cat='.$category->term_id) as $post) {
        setup_postdata( $post );
        echo '<li><a href="'.get_permalink($post->ID).'">'.get_the_title().'</a></li>';   
    }  
    echo '</ul>';
}

Per noi sviluppatori WordPress, il Codex è la chiave per la maggior parte delle basi. Quindi, secondo il WordPress Codex:

  • get_categories() esegue una query per tutte le categorie di un sito e restituisce un array.
  • Allo stesso modo, get_posts() esegue una query per tutti gli articoli di un sito e restituisce un array.

Entrambi sono scorciatoie per WP_Query(). Puoi trovare tutti i loro possibili parametri nelle pagine del Codex. Essendo un appassionato di PHP, sai come funziona il codice: $categories prende tutte le categorie e per ogni categoria get_posts() prende i suoi articoli.

Quindi è molto simile a una query mySQL e a un ciclo foreach in PHP puro. Puoi inserire questo codice in una qualsiasi delle pagine dei template del tema attivo del tuo sito WP. La Gerarchia dei Template può darti un'idea dettagliata.

Come da titolo della tua domanda:

Come visualizzare un elenco di categorie

La risposta può essere:

$categories =  get_categories();
echo '<ul>';
foreach  ($categories as $category) {
  echo '<li>'. $category->cat_name .'</li>';
}
echo '</ul>';

non sono sicuro di dove inserire il codice o come accedervi nella pagina.

L'ho già detto, prova a inserire il codice in index.php, front-page.php, ... ovunque. Il concetto chiave è: è solo una Query SQL e un utile ciclo foreach di PHP.

8 feb 2014 11:01:16
0

Questo metodo ti permette di escludere qualsiasi categoria semplicemente aggiungendo l'ID della categoria al codice.

Ecco un modo migliore per aggiungere un elenco di categorie condizionalmente dal file functions del tuo child theme in qualsiasi hook di WordPress o posizione specifica del tema:

add_filter( 'the_content', 'wpsites_list_cats' );
function wpsites_list_cats($content) {
if( is_singular('post') && is_main_query() ) {
$args = array(
'orderby' => 'name',
'exclude' => '',
'include' => '',
'parent' => 0
);
$categories = get_categories( $args );
echo'<nav id="primary-navigation" class="primary-navigation" role="navigation">';
foreach ( $categories as $category ) {
echo '<li><a href="' . get_category_link( $category->term_id ) . '">' .  $category->name . '</a></li>';
}
echo'</nav>';
return $content;
    }
}

Ecco il risultato

Risultato dell'elenco delle categorie

Ed ecco il risultato se vuoi utilizzare lo stile esistente dai menu di navigazione di Twenty Fourteen che il codice sopra include.

Risultato con stile Twenty Fourteen

Il codice ti permette anche di includere categorie specifiche o escluderne altre utilizzando gli ID delle categorie.

Potresti anche creare un'area widget personalizzata e utilizzare il widget categorie nativo di WordPress.

Basta cambiare l'hook the_content per modificare la posizione dell'elenco delle categorie.

Modificato da questa fonte

8 feb 2014 17:32:56
0

Oppure utilizza il plugin List Categories con il suo shortcode configurabile, che funziona come una scorciatoia per la wp_list_categories( array|string $args = '' ) funzione.

Puoi configurare i suoi argomenti come documentato anche lì.

18 lug 2023 18:29:28
0

Il modo più semplice per ottenere ciò è utilizzare il widget predefinito delle categorie di WordPress.

15 apr 2024 21:02:14