Yalnızca öne çıkan resimle yayınları sorgula


15

6 yayını sorgulamak istiyorum, ancak yalnızca özellikli bir görüntü iliştirilmiş olanlar. Bunun gibi meta_keyyöntemini kullanıyorum WP_Query:

$args = array(
    'post_type'  => 'post',
    'meta_key' => '_thumbnail_id',
    'post_count' => 6 );
$query = new WP_Query($args);

Bunu takiben

<?php while($query->have_posts()) : $query->the_post(); ?>
    <h2><?php the_title(); ?></h2>
    <?php the_post_thumbnail('thumbnail'); ?>
<?php endwhile; ?>

Bu işe yaramıyor gibi görünüyor. Sorgu 6'dan fazla gönderi ve özellikli bir resmi olmayanları döndürüyor. Burada neyin yanlış gittiğine dair bir fikrin var mı?

@chip: var_dump($query);Bir onu gönderdiniz yüzden büyük bir sonuç verir pastebin


2
Kod pasajı beklediğim gibi benim için çalıştı. Hata, kodun başka bir bölümünde olabilir.
Ralf912

Ne alıyorsun var_dump( $query )?
Chip Bennett

Düşündüğüm ekstra bir şey olarak - mesajlar wordpress ihracatçısı / ithalatçı kullanarak canlı bir siteden yerel sunucuma aktarıldı. Orijinal yayınların tümü, içe aktarma sürecinde açıkça kaybolan görüntüler içeriyordu. Bu, özellikli resimler kaldırılsa da meta anahtarların sorgunun bozulmasına neden olmaya devam ettiği anlamına gelebilir mi?
harryg

İçe aktarmayı çalıştırdığınızda, tüm ekleri / medyayı indirmek ve eklemek için kutuyu işaretlediniz mi? Eğer yapmadıysanız, öne çıkan resimleriniz çalışmaz. Mesajlar öne çıkan bir resme sahip olacak, ancak mevcut olmayan bir eke atıfta bulunacak ve bu yüzden asla görüntülenmeyecek
Tom J Nowell

Evet, içe aktarırken kutuyu işaretledim.
harryg

Yanıtlar:


3

İçe aktarıcıyı çalıştırırken, tüm medya / ekleri indirmek ve içe aktarmak için onay kutusunu işaretlemelisiniz.

Bunu yapmazsanız, yayınlarda özellikli bir resim grubu bulunur, ancak başvuruda bulundukları ek geçersiz the_post_thumbnailolur ve arama denemesi başarısız olur. Kodunuzu kullanarak sadece yayın başlığını alırsınız ve küçük resim olmaz. Bu, hiçbir özellikli resmi olmayan gönderilerin çekildiği izlenimini verir. Bu durum böyle değildir, özellikli bir resme sahiptir, içe aktarırken yaptığınız hata nedeniyle kullanılamaz.

Yayınlarınızı silin ve doğru ayarları kullanarak yeniden içe aktarın.

Ayrıca noktayı göstermek için, mesajları gerçekten kontrol etmeye çalışmadınız, her zaman örneğin:

if ( $query->have_posts() ) { // you never checked to see if no posts were found
    while($query->have_posts()) { // alt style syntax doesn't work with most IDEs
        $query->the_post(); // individual statement should be on individual line
        ?><h2><?php the_title(); ?></h2><?php // you only need open/close tags here, not every line, save yourself some time typing
        if ( has_post_thumbnail() ) { // only print out the thumbnail if it actually has one
            echo '<p>post says it has a featured image</p>'; // double checking
            the_post_thumbnail('thumbnail');
        } else {
            echo '<p>this post does not have a featured image</p>';
        }
    }
} else {
    echo '<p>no posts found</p>';
}

Onay kutusunu işaretlemediyseniz, özellikli bir resme sahip olduklarını söyleyen resimler alırsınız, ancak hiçbir resim gösterilmez


1
Verdiğim yanıtın beklendiği gibi çalışmamasının nedeni bu. WordPress İntihar eklentisi tüm içeriği silmek için oldukça yararlıdır.
helgatheviking

Kesinlikle bu kutuyu işaretledim. Ancak deneyimlerime göre bu benim için hiç işe yaramadı. Tüm görüntüler harici siteye geri bağlandı. Görüntüleri yerel olarak saklamak ve eklemek için Dış Görüntüleri İçe Aktar ( wordpress.org/extend/plugins/import-external-images ) eklentisini kullandım.
harryg

Aynı düşünceye sahiptim, kutuyu kesinlikle kontrol ettim, neden hala çalışmıyor? İstemcilerden aldım ve yanlış olmak çok kolay, bu nedenle yayınlarınızı silin, yeniden içe aktarın ve işaretlendiğinden emin olun ve hala işe yaramazsa, bunu hariç tutabilirsiniz. Aksi takdirde Neil DeGrasse Tyson'ın insan hafızasının ne kadar zayıf olduğu hakkında konuşur. Şu anda sizden ikinci onay kutusunun işaretini kaldırmanızı isteyebilirim ve muhtemelen bunu da gördüğünüzü hatırlarsınız (ama bir tane yoktur)
Tom J Nowell

ve bu arada, the_post_thumbnailbir has_thumbnailçağrı ile sarın ve başka bir vaka ekleyin, böylece kesinlikle açıkça bir gönderinin özellikli bir görüntü olmadığını biliyorum
Tom J Nowell

Ayrıca sunucunuzun uzak sunucuya ulaşabildiğinden emin olun. Sunucunuz uzak istekleri alamazsa, içe aktarılamaz. Daha önceden alınmış medya eklerini silmeniz gerekebilir
Tom J Nowell

24

WordPress 3.5 itibariyle, Meta Sorgu Parametreleri destek EXISTSve NOT EXISTSkarşılaştırma işleçleri olarak. Bunları kullandığınızda value, meta sorgunun bölümünü atlayabilirsiniz . Sorgunuz için aşağıdaki bağımsız değişkenleri deneyin:

$args = array(
   'post_type'  => 'post',
   'posts_per_page' => 6,
    'meta_query' => array(
        array(
         'key' => '_thumbnail_id',
         'compare' => 'EXISTS'
        ),
    )
);

Önerin için teşekkürler. Şimdi 6 gönderi alıyorum ama yine de küçük resimler olmadan gönderi alıyorum.
harryg

Bunu test ettim ve benim için çalıştı. Ancak meta kümesi olan varlıkları döndüreceğini fark ettim, ancak bazı nedenlerden dolayı ek kimliği doğru değil. Bu nedenle yayınlarınızda öne çıkan resimlerin ayarlandığından emin olun. Aksi takdirde, sorunun başka ne olabileceğini bilmiyorum.
helgatheviking

harryg, v3.5 veya üstünü kullandığınızı onaylayabilir misiniz?
Tom J Nowell

Evet WordPress'in en son sürümünü çalıştırıyorum - yerel geliştirici sunucuma ağ (çoklu site) kurulumu olarak yeni yüklendi.
harryg

2
Sadece bazı ek bilgiler: Bir çözümlenmemiş hata vardır, bkz trac bilet 23.268 eğer gerekli bir değeri kullanmak yapar, NOT EXISTSkullanılır.
Nicolai
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.