it-swarm.com.de

Das benutzerdefinierte Taxonomiearchiv von Wordpress Genesis zeigt 3 Wiederholungen jedes Posts

Ich benutze ein Kinderthema zur Entstehung. Ich habe einen benutzerdefinierten Beitragstyp und eine benutzerdefinierte Taxonomie eingerichtet und verwende erweiterte benutzerdefinierte Felder, um eine Galerie auf jeder Seite des CPT zu platzieren. Auf den Taxonomie-Archivseiten möchte ich ein einzelnes Bild aus jeder Galerie als Miniaturansicht anzeigen, das auf den Beitrag verweist. Ich habe dies erfolgreich mit einer neuen Vorlage für die benutzerdefinierte Taxonomie eingerichtet. Wenn ich jedoch 'numberposts' => -1 setze, um alle Beiträge anzuzeigen, erhalte ich acht Wiederholungen für jeden Beitrag/jedes Miniaturbild. Wenn ich es auf 'numberposts' => 1 setze, bekomme ich 3 Wiederholungen von jedem Post/Thumbnail. Wie zeige ich nur ein einzelnes Vorschaubild von jedem Beitrag?

Ich weiß nicht genau, ob dies ein WordPress-Problem ist, aber ich denke, es muss etwas damit zu tun haben, wie ich die benutzerdefinierte Schleife einrichte.

<?php
//* Template Name: Press Release; Archive

remove_action ('genesis_loop', 'genesis_do_loop'); // Remove the standard loop 
add_action ('genesis_after_loop', 'collection_categories'); // add custom loop
function collection_categories(){

$terms = get_terms('collection_categories');
foreach($terms as $term) {
$posts = get_posts(array(
        'post_type' => 'collections',
        'tax_query' => array(
            array(
                'taxonomy' => 'collection_categories',
                'field' => 'slug',
                'terms' => $term->slug
            )
        ),
        'numberposts' => 1
    ));

foreach($posts as $post) {

//* One image from gallery on archive pages

        if ( have_posts() ) : 
while ( have_posts() ) : the_post();

    $images = get_field('gallery'); 
    $image_1 = $images[0];
    $link = get_the_permalink();

?>

<a href="<?php echo $link ?>"><img src="<?php echo $image_1['sizes']    ['thumbnail']; ?>" alt="<?php echo $image_1['alt']; ?>" /></a>
<?php

        endwhile;
        endif;
}
}
}
genesis();
1
apol

Sie verwenden eine verschachtelte Schleife in Ihrem Code. Sie sollten nur die foreach-Schleife verwenden und die Post-ID an get_field() übergeben. Hier ist ein Beispiel:

$terms = get_terms( 
    [ 
        'taxonomy' => 'collection_categories', 
        'orderby'  => 'name', 
        'order'    => 'DESC'
    ] 
);

// Rest of the code  here 

foreach ( $posts as $post ) {

    //* One image from gallery on archive pages
    $images  = get_field( 'gallery', $post->ID ); 
    $image_1 = $images[0];

    ?>

    <a href="<?php the_permalink( $post->ID ); ?>">
        <img src="<?php echo $image_1['sizes']['thumbnail']; ?>" alt="<?php echo $image_1['alt']; ?>" />
    </a><?php

}

// Don't forget to reset the postdata
wp_reset_postdata();
2
Jack Johansson