Come elencare le categorie di una tassonomia personalizzata?
Ho un tipo di post personalizzato (CPT) che contiene prodotti e una tassonomia che contiene i termini dei prodotti. Ho bisogno di visualizzare questi termini nella pagina 'Prodotti' e quando si fa clic su un determinato termine, deve mostrare i prodotti che appartengono a quel termine.
Tra l'altro, quando faccio clic su 'visualizza' su un determinato termine, viene visualizzato solo il titolo di un prodotto. Ho creato il CPT e la tassonomia utilizzando il plugin CPT UI.
Ecco il codice del mio file template page-products.php (che elenca tutti i prodotti):
<?php
/* Template Name: Prodotti
*/
?>
<?php get_header('header.php') ?>
<!--Apertura del container o wrap fuori dal loop-->
<div class="container my-container">
<!--inizia il loop-->
<?php
$args=array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => 10,
);
$the_query = null;
$the_query = new WP_Query($args);
if( $the_query->have_posts() ) {
$i = 0;
while ($the_query->have_posts()) : $the_query->the_post();
if($i % 3 == 0) { ?>
<div class="row">
<?php
}
?>
<div class="col-md-4">
<div class="my-inner">
<?php the_post_thumbnail(); ?>
<div class="title"><a href="<?php the_permalink(); ?>"><?php
the_title(); ?></a></div>
<?php the_excerpt(); ?>
</div>
</div>
<?php $i++;
if($i != 0 && $i % 3 == 0) { ?>
</div><!--/.row-->
<div class="clearfix">fgfd</div>
<?php
} ?>
<?php
endwhile;
}
wp_reset_query();
?>
Per ottenere un elenco delle tue tassonomie personalizzate, puoi usare la funzione get_terms()
per creare un ciclo:
// Ottieni i termini della tassonomia
$terms = get_terms(
array(
'taxonomy' => 'your-taxonomy',
'hide_empty' => false,
)
);
// Verifica se esistono termini
if ( ! empty( $terms ) && is_array( $terms ) ) {
// Esegui un ciclo e visualizzali tutti
foreach ( $terms as $term ) { ?>
<a href="<?php echo esc_url( get_term_link( $term ) ) ?>">
<?php echo $term->name; ?>
</a><?php
}
}

Grazie, funziona! Però ho un altro problema - quando clicco sulla mia categoria, viene mostrato solo il titolo di un post. C'è un template specifico che devo avere per visualizzare i post per categoria? Scusa se sembro stupido, ma sono perso.

Di nulla. Non è affatto stupido. Potrebbero esserci diverse ragioni. Una potrebbe essere che hai impostato i post per pagina a 1 nelle tue impostazioni di "Lettura" nella dashboard. Un altro problema potrebbe essere con il template. Prova a verificare se esiste taxonomy-your_taxonomy.php
o taxonomy.php
. Potresti anche avere un filtro pre_get_posts
nel tuo file functions.php
che limita i risultati.

Ok, creare il template della tassonomia ha funzionato, quando clicco sulla categoria ottengo un elenco dei miei post. Ma usando il codice nel mio post originale, ottengo gli stessi prodotti indipendentemente da quale categoria clicco. Ad esempio, ho una categoria con 3 prodotti e quando la clicco vedo questi prodotti, ma vedo gli stessi prodotti quando clicco su una categoria diversa. Penso che devo usare l'ID della categoria, giusto?

Sì, certo. Devi fare una tax_query
se hai intenzione di usare il tuo codice. Dai un'occhiata alla classe WP_Query
e non esitare a fare una nuova domanda se il problema persiste.

Ciao Jack. Voglio davvero ringraziarti per tutto l'aiuto. Sono riuscito a ottenere il risultato finale che volevo. Un brindisi a te amico! :)
