Wie kann ich Posts aus Kategorien mit bestimmten Tags abfragen? Wenn ich zum Beispiel " localhost/tag/tutorial " besuche, wird auf der Archivseite der gesamte Beitrag aller Kategorien mit dem Tutorial-Tag angezeigt.
Aber die Ansicht würde nach Kategorien getrennt. Zum Beispiel:
Kategorie 1
Kategorie 2
NB: Die Beiträge werden in jeder Kategorie mit denselben Tags angezeigt.
Ich habe einen Code, der die neuesten Beiträge in jeder Kategorie anzeigt
<?php
$categories = get_categories();
foreach($categories as $category) { ?>
<div class="CategoryPost">
<h2><?php echo $category->name; ?></h2>
<ul>
<?php
$post_args = array(
'category' => $category->term_id,
'numberposts' => 9999,
'orderby'=> 'post_date',
'order' => 'ASC',
'post_type' => 'post'
);
$posts = get_posts($post_args);
foreach($posts as $post) { ?>
<li id="post-<?php the_ID(); ?>"><span><?php the_time('d M Y') ?></span> <i class="Seperate">»</i> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php } ?>
</ul>
</div>
<?php }
wp_reset_postdata(); ?>
Der obige Code würde die neuesten Beiträge in jeder Kategorie mit diesem Look anzeigen.
Name der Kategorie 1
Name der Kategorie 2
Name der Kategorie 3
Ich möchte ein Tag-Archiv erstellen, das mit dieser Vorlage funktioniert, und die Posts werden in jeder Kategorie angezeigt, auch wenn die Posts dieselben Tags haben.
Dies wird dazu beitragen, dass die Kategorie auf der Tag-Archivseite veröffentlicht wird. Gib mir Bescheid.
<?php
$current_tag = single_tag_title( $prefix = '', $display = false );
$categories = get_categories( array('hide_empty' => TRUE) );
foreach($categories as $category) { ?>
<?php
$args=array(
'posts_per_page' => -1,
'tag' => $current_tag,
'cat' => $category->term_id,
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
?>
<div class="CategoryPost">
<h2><?php echo "Tag: " . $current_tag; ?></h2>
<h2><?php echo "Category: " . $category->name; ?></h2>
<ul>
<?php
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>Post title: ' . get_the_title() . '</li>';
}
echo '</ul></ul></div><br>';
}
?>
<?php }
wp_reset_postdata();
Bitte probieren Sie dieses und lassen Sie es mich wissen, wenn es hilft.
<?php
$categories = get_categories( array('hide_empty' => TRUE) );
foreach($categories as $category) { ?>
<?php
$args=array(
'posts_per_page' => -1,
'tag' => 'tutorial',
'cat' => $category->term_id,
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
?>
<div class="CategoryPost">
<h2><?php echo $category->name; ?></h2>
<ul>
<?php
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul></ul></div>';
}
?>
<?php }
wp_reset_postdata(); ?>
P.S. Ich habe gerade den Post-Titel gedruckt. Wenn dies für Sie funktioniert, fügen Sie bitte weitere Parameter zum Drucken hinzu.
Vielen Dank
EDIT: Für alle Tags anzeigen.
<?php
$tags_array = get_tags();
$categories = get_categories( array('hide_empty' => TRUE) );
foreach($tags_array as $tag){
foreach($categories as $category) { ?>
<?php
$args=array(
'posts_per_page' => -1,
'tag_id' => $tag->term_id,
'cat' => $category->term_id,
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
?>
<div class="CategoryPost">
<h2><?php echo "Tag: " . $tag->name; ?></h2>
<h2><?php echo "Category: " . $category->name; ?></h2>
<ul>
<?php
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>Post title: ' . get_the_title() . '</li>';
}
echo '</ul></ul></div><br>';
}
?>
<?php } }
wp_reset_postdata(); ?>
@GaroPpo Hier ist ein optimierter Code, den ich dir vorgeschlagen habe. Ich hoffe, dies wird Ihre Anforderungen erfüllen.
<?php
$tag_id = array(12, 13, 14);
$taxonomy = 'testimonial-category';
$postType = 'testimonial';
$terms = get_terms(['taxonomy' => $taxonomy, 'orderby' => 'term_id', 'hide_empty' => true]);
?> <div class="add-accordion"> <?php
foreach($terms as $term){
if($term->parent == 0){
echo '<h3>' . $term->name . '</h3>';
continue;
} $posts = get_posts(array('post_status' =>'publish','post_type' => $postType, 'tag__in' => $tag_id,
array(
'taxonomy' => $taxonomy,
'field' => 'term_id',
'terms' => $term->term_id,
),));
?>
<div class="add-accordion">
<h3><?php echo $term->name ?></h3>
<div class="add-accordion">
<?php foreach($posts as $post){ ?>
<h3><?php echo $post->post_title ?></h3>
<div class="">
<?php echo get_the_content($post->ID) ?>
</div>
<?php } ?>
</div>
</div>
<?php
}
?>