WordPress döngü dışında X kategorisinde yazılan başına 1 eki alın

2 Cevap php

Birisi bu konuda yardımcı olabilir umuyoruz. Ne istediğiniz mesaj permalink bağlantılar, hangi kenar çubuğunda display 5 attachments but only 1 attachment from each post from a specific category etmektir.

Ben tüm mesajların tüm ekleri alır kadar aşağıdaki kodu kullanıyorum ama bazı mesajlar 1'den fazla eki var ve ben sadece ilkini göstermek istiyorum, ve yazının permalink bağlamak.

Sınırı 5 ileti olmasına rağmen tek bir post 4 ekleri vardır Yani, o zaman şu anda sadece 5 farklı mesajların her birinden 1 göstermek ne ben yapmak istiyorum 5, toplam diğerinden biri ve 1 ila 4 gösterecektir.

<?php

$args = array(
    'post_type' => 'attachment',
    'numberposts' => 5,
    'post_status' => null,
    'post_parent' => null, // any parent
    'category_name' => 'work',
    );
$attachments = get_posts($args);
if ($attachments) {
    foreach ($attachments as $post) {
        setup_postdata($post);
        the_title();
        the_permalink();
        the_attachment_link($post->ID, false);
        the_excerpt();
    }
}

?>

Cheers. Dave

2 Cevap

Bunun için Şerefe. Henüz test etmedim ama aşağıdaki kodu kullanarak çalışma almak başarmıştı. Ben hiçbir şekilde bir hardcore PHP programcısı değilim, o yüzden yöntem en iyisi olduğundan emin değilim. Ben şu anda tüm bildiğim ne var çalışmak gibi görünüyor olmasıdır.

<?php query_posts('category_name=work&posts_per_page=10'); ?>
                    <?php while (have_posts()) : the_post(); ?>
                        <?php
                        $args = array(
                            'order'          => 'ASC',
                            'post_type'      => 'attachment',
                            'post_parent'    => $post->ID,
                            'post_mime_type' => 'image',
                            'post_status'    => null,
                            'numberposts'    => 1,
                        );
                        $attachments = get_posts($args);
                        if ($attachments) {
                            foreach ($attachments as $attachment) {
                                //echo apply_filters('post_title', $attachment->post_title);
                                echo "<li><a href='";
                                echo the_permalink();
                                echo "' title='";
                                echo the_title();
                                echo "'>";
                                echo wp_get_attachment_image($attachment->ID, 'thumbnail', false, false);
                                echo "</a></li>";
                            }
                        }
                        ?>
                    <?php endwhile;?>

Ona bir çatlak olması için teşekkürler!

Dave

Tamam, ben gerçekten özel bir sorgu kullanarak herhangi şık bir yolu vardır sanmıyorum, bu bir çatlak aldı;

$attachment_IDs = $wpdb->get_col(
    "SELECT ID FROM $wpdb->posts WHERE
        post_parent > 0 AND
        post_type = 'attachment'
    GROUP BY post_parent
    ORDER BY post_date DESC
    LIMIT 5"
);

if ($attachment_IDs) {
    $attachments = get_posts(array('include' => implode(',', $attachment_IDs)));
    // do what you like!
}

Sorgu her eki benzersiz bir ebeveyne sahip sayede beş en son ekleri alır.

GÜNCELLEME:

Üzgünüm, sadece fark çok kategoriye göre sorgulamak istedim - bu büyük eski SEÇ sonra katılmak ekleyin;

INNER JOIN $wpdb->term_relationships ON
    ($wpdb->posts.ID = $wpdb->term_relationships.object_id)
INNER JOIN $wpdb->term_taxonomy ON
    ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)

Ve WHERE yan tümcesi bunu ekleyin;

AND $wpdb->term_taxonomy.term_id IN (YOUR_CATEGORY_ID)