Parcurgeți taxonomiile personalizate și afișați postările
În timp ce am reușit să fac acest lucru să funcționeze pentru categoriile normale WordPress, nu am reușit să-l fac să funcționeze pentru taxonomiile personalizate.
Aș dori să parcurg fiecare taxonomie personalizată (categorii în cazul meu) și să produc un număr de postări pentru fiecare.
Un exemplu al rezultatului ar fi:
Categoria 1
postare din categoria unu
postare din categoria unu
citește mai multe categoria unu
Categoria 2
postare din categoria doi
postare din categoria doi
citește mai multe categoria doi
Bineînțeles, ar repeta procesul pentru orice taxonomie disponibilă pentru tipul de postare personalizat.

Am decis să ofer un alt răspuns, deoarece cel de mai sus este puțin hacky, de asemenea am adăugat un alt strat care preia toate taxonomiile pentru un post_type.
$post_type = 'post';
// Obținem toate taxonomiile pentru acest tip de postare
$taxonomies = get_object_taxonomies( (object) array( 'post_type' => $post_type ) );
foreach( $taxonomies as $taxonomy ) :
// Obținem fiecare "categorie" (term) din această taxonomie pentru a prelua postările respective
$terms = get_terms( $taxonomy );
foreach( $terms as $term ) :
$posts = new WP_Query( "taxonomy=$taxonomy&term=$term->slug&posts_per_page=2" );
if( $posts->have_posts() ): while( $posts->have_posts() ) : $posts->the_post();
//Aici puteți face bucla generală de interogare
endwhile; endif;
endforeach;
endforeach;
Ar fi recomandat să adăugați fiecare postare găsită într-un array $post__not_in
, astfel încât să îl puteți transmite către WP_Query
pentru a preveni afișarea postărilor duplicate.

Cauți asta?
<?php query_posts(array('post_type' => 'numele tipului de postare', 'Taxonomy slug' => $term->slug ) ); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php endwhile; else: ?>
<p><?php _e('Ne pare rău, niciun articol nu corespunde criteriilor tale.'); ?></p>
<?php endif; ?>
Cum să creezi o buclă personalizată de Taxonomie
Sper că te va ajuta

Copiază și lipește această funcție în functions.php
if ( ! function_exists( 'display_all_products_from_all_categories' ) ) {
function display_all_products_from_all_categories() {
// Obține toate categoriile pentru Custom Post Type Product
$args = array(
'post_type' => 'product',
'orderby' => 'id',
'order' => 'ASC'
);
$categories = get_categories( $args );
foreach ($categories as $category) {
?>
<div class="<?php echo $category->slug; ?>">
<!-- Obține titlul categoriei -->
<h3 class="title"><?php echo $category->name; ?></h3>
<!-- Obține descrierea categoriei -->
<div class="description">
<p><?php echo category_description( get_category_by_slug($category->slug)->term_id ); ?></p>
</div>
<ul class="mhc-product-grid">
<?php
// Obține toate produsele din fiecare categorie specifică
$product_args = array(
'post_type' => 'product',
'orderby' => 'id',
'order' => 'ASC',
'post_status' => 'publish',
'category_name' => $category->slug // trecem slug-ul categoriei curente
);
$product_list = new WP_Query ( $product_args );
?>
<?php while ( $product_list -> have_posts() ) : $product_list -> the_post(); ?>
<li class="product <?php the_field( 'product_flavor' ); ?>">
<a href="<?php the_permalink(); ?>" class="product-link">
<!-- dacă postul are o imagine, o afișează -->
<?php if( has_post_thumbnail() ) : ?>
<?php the_post_thumbnail( 'full', array( 'class' => 'img', 'alt' => get_the_title() ) ); ?>
<?php endif; ?>
<!-- câmpuri personalizate: product_flavor, product_description ... -->
<h3 class="title <?php the_field( 'product_flavor' ); ?>"><?php the_title(); ?></h3>
<p class="description"><?php the_field( 'product_description' ); ?></p>
</a>
</li>
<?php endwhile; wp_reset_query(); ?>
</ul>
</div>
<?php
}
}
}
Apoi apelează-o din orice parte a template-ului cu:
display_all_products_from_all_categories();

Vă rugăm să verificați acest exemplu; creați o buclă personalizată pentru taxonomia dumneavoastră. Puteți utiliza acest lucru și într-o buclă foreach pentru a afișa toate categoriile. Sau va trebui să creați o interogare SQL personalizată.
<?php
$taxonomies = get_the_term_list($post->ID, 'TAXONOMIA_TA', '', '', '');
$taxonomies = explode('>', $taxonomies);
$taxonomies = $taxonomies[1];
$myq = new WP_Query('taxonomia_dvs = '.$taxonomies);
if ($myq->have_posts()) : while ($myq->have_posts()) : $myq->the_post(); // bucla ?>
<?php the_title();?>
<?php the_content();?>
<?php endwhile; else:?>
<?php endif;?>
