it-swarm.dev

Zobrazuje miniaturu příspěvku v příloze kategorie archive.php

Snažím se přizpůsobit seznam kategorií (archive.php) tak, aby zobrazoval miniaturu prvního obrázku připojeného ke každému příspěvku.

Zdá se však, že soubor archive.php je jedním z těch, které nepodporují objekt přílohy. Například níže uvedený kód udělá většinu toho, co chci (i když není nalezena žádná příloha, dostanu prázdný obrázek, musím to opravit).

Obávám se však, že SELECT ve smyčce, jako je tato, je možná příliš drahý na to, co se snažím udělat.

Nějaké nápady?

    <?php while (have_posts()) : the_post(); ?>
    <?php global $wpdb; $attachment_id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_parent = '$post->ID' AND post_status = 'inherit' AND post_type='attachment' ORDER BY post_date DESC LIMIT 1"); ?>
        <div class="searchItem" style="clear:both;">
            <h3 id="post-<?php the_ID(); ?>"><img src="<?php echo wp_get_attachment_url($attachment_id); ?>" class="post-attachment" /><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
            <small><?php the_time('l, F jS, Y') ?></small>
            <div class="excerpt"><?php echo $post->post_excerpt; ?></div>
            <div class="postmetadata">Posted in <?php the_category(', ') ?> | <?php comments_popup_link('No Comments &#187;', '1 Comment &#187;', '% Comments &#187;'); ?></div>
        </div>
    <?php endwhile; ?>
1
Scott B

Můžete použít funkci WordPress get_children. I když si nemyslím, že je to rozdíl, výkon-moudrý.

<?php while (have_posts()) : the_post(); ?>
    <?php $attachment = array_values( get_children( array( 'post_parent' => $post->ID, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'numberposts'  => 1 ) ) ); ?>
    <div class="searchItem" style="clear:both;">
        <h3 id="post-<?php the_ID(); ?>">
        <?php if( $attachment ) echo '<img src="' . wp_get_attachment_url($attachment[0]->ID) . '" class="post-attachment" />'; ?>
        <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
        <small><?php the_time('l, F jS, Y') ?></small>
        <div class="excerpt"><?php echo $post->post_excerpt; ?></div>
        <div class="postmetadata">Posted in <?php the_category(', ') ?> | <?php comments_popup_link('No Comments &#187;', '1 Comment &#187;', '% Comments &#187;'); ?></div>
    </div>
<?php endwhile; ?>
2
sorich87

WP má základní funkci pro zobrazení tohoto, viz můj příspěvek http://wpengineer.com/1735/easier-better-solutions-to-get-pictures-on-your-posts/

0
bueltge