web-dev-qa-db-fra.com

Afficher l'image sélectionnée du dernier message

Je construis une page d'aperçu des catégories et j'utilise ce code:

<?php
    $limit      = 999;
    $counter    = 0;
    $categories = get_categories();

    foreach ($categories as $category):
        if ($counter < $limit) {
            $args  = array(
                'category__in' => array(
                    $category->term_id
                ),
                'caller_get_posts' => 1
            );
            $posts = get_posts($args);
            if ($posts) {
                echo '<div class="category">';
                echo '<a href="' . get_category_link($category->term_id) . '" title="' . sprintf(__("View all posts in %s"), $category->name) . '" ' . '>';
                echo '<h3>' . $category->name . '</h3>';
                echo '</a>';
                echo '</div>';

            }
        }

    $counter++;
    endforeach;
?>

Mais comment insérer dans l'écho que l'image sélectionnée du dernier message de cette catégorie sera affichée.

1
Maanstraat

J'ai utilisé Mat son code et corrigé un problème dupliqué.

Le code qui fonctionne comme un charme :

<?php
    $limit      = 999;
    $counter    = 0;
    $categories = get_categories();

    foreach ($categories as $category):
        if ($counter < $limit) {
            $args  = array(
                'posts_per_page' => 1,
                'cat' => $category->cat_ID,
                'ignore_sticky_posts' => 1
            );
            $posts = get_posts($args);
            if ($posts) {
                    echo '<div class="category">';
                    while( have_posts() ) : the_post();
                        the_post_thumbnail();
                    endwhile;
                    echo '<a href="' . get_category_link($category->term_id) . '" ' . '>';
                    echo '<h3>' . $category->name . '</h3>';
                    echo '</a>';
                    echo '</div>';
            }
        }

    $counter++;
    endforeach;
?>
1
Maanstraat

Cela devrait marcher. J'ai légèrement modifié votre $args et entouré votre code renvoyé dans la boucle while(have_posts()) : the_post();, puis j'ai ajouté la fonction the_post_thumbnail() et, enfin, la wp_query_reset(); en bas:

<?php
    $limit      = 999;
    $counter    = 0;
    $categories = get_categories();

    foreach ( $categories as $category ):
        if ( $counter < $limit ) {
            $args  = array(
                'posts_per_page' => 1,
                'cat' => $category->cat_ID,
                'ignore_sticky_posts' => 1
            );
            $posts = get_posts( $args );

            while( have_posts() ) : the_post();
                echo '<div class="category">';
                the_post_thumbnail();
                echo '<a href="' . get_category_link($category->term_id) . '" title="' . sprintf(__("View all posts in %s"), $category->name) . '" ' . '>';
                echo '<h3>' . $category->name . '</h3>';
                echo '</a>';
                echo '</div>';
            endwhile;

        }

    $counter++;
    endforeach;

    wp_query_reset();

?>

Ps. caller_get_posts est déconseillé depuis la version 3.1! Utilisez ignore_sticky_posts à la place de votre $args

1
Mat