Cum să listezi categoriile unei taxonomii personalizate?
Am un tip de postare personalizat (CPT) care conține produse și o taxonomie care conține termenii produselor. Trebuie să afișez acești termeni pe pagina 'Produse' și când se face click pe un anumit termen, trebuie să afișeze produsele care aparțin acelui termen.
Apropo, când fac click pe 'vizualizare' pentru un anumit termen, afișează doar titlul unui singur produs. Am creat CPT-ul și taxonomia folosind plugin-ul CPT UI.
Aici este codul fișierului meu template page-products.php (care listează toate produsele):
<?php
/* Template Name: Products
*/
?>
<?php get_header('header.php') ?>
<!--Deschiderea containerului sau wrapper-ului în afara buclei-->
<div class="container my-container">
<!--începe bucla-->
<?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();
?>
Pentru a obține o listă a taxonomiilor personalizate, puteți utiliza funcția get_terms()
pentru a crea o buclă:
// Obține termenii taxonomiei
$terms = get_terms(
array(
'taxonomy' => 'your-taxonomy',
'hide_empty' => false,
)
);
// Verifică dacă există termeni
if ( ! empty( $terms ) && is_array( $terms ) ) {
// Rulează o buclă și afișează toți termenii
foreach ( $terms as $term ) { ?>
<a href="<?php echo esc_url( get_term_link( $term ) ) ?>">
<?php echo $term->name; ?>
</a><?php
}
}

Mulțumesc, funcționează! Totuși am o altă problemă - când dau click pe o categorie, apare doar titlul unui singur articol. Există vreun șablon specific care să afișeze articolele pe categorii? Scuze dacă sună prostesc, dar sunt pierdut.

Cu plăcere. Nu e deloc prostesc. Pot fi mai multe cauze. Una ar putea fi că ai setat "Articole pe pagină" la 1 în setările de "Citire" din panoul de administrare. Altă problemă ar putea fi cu șablonul. Încearcă să verifici dacă există taxonomy-your_taxonomy.php
sau taxonomy.php
. S-ar putea să ai și un filtru pre_get_posts
în fișierul functions.php
care limitează rezultatele.

Ok, crearea șablonului de taxonomie a funcționat, când apăs pe categorie primesc o listă cu articolele mele. Dar folosind codul din postarea mea originală, primesc aceleași produse indiferent pe ce categorie dau click. De exemplu, am o categorie cu 3 produse și când dau click pe ea le văd, dar văd aceleași produse când dau click pe o altă categorie. Cred că trebuie să folosesc ID-ul categoriei, nu?

Da, desigur. Trebuie să folosești un tax_query
dacă intenționezi să-ți scrii propriul cod. Aruncă o privire în clasa WP_Query
și nu ezita să pui o nouă întrebare dacă problema persistă.

Salut Jack. Vreau să-ți mulțumesc din suflet pentru toată ajutorul. Am reușit să obțin rezultatul dorit. Noroc și succes în continuare! :)
