ข้อความค้นหาโพสต์ด้วยรูปภาพเด่นเท่านั้น


15

ฉันต้องการสอบถาม 6 โพสต์ แต่เฉพาะโพสต์ที่มีรูปภาพเด่น ฉันใช้meta_keyวิธีการนี้ด้วยWP_Queryเช่น:

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

ติดตามโดย

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

ดูเหมือนจะใช้งานไม่ได้ ข้อความค้นหาส่งคืนมากกว่า 6 โพสต์และข้อความที่ไม่มีภาพเด่น ความคิดใดที่ฉันผิดที่นี่?

@chip: var_dump($query);ให้ผลลัพธ์มากดังนั้นฉันได้โพสต์ไว้ในpastebin


2
ข้อมูลโค้ดทำงานสำหรับฉันตามที่คาดไว้ อาจเกิดข้อผิดพลาดในส่วนอื่นของรหัส
Ralf912

คุณได้var_dump( $query )อะไรจาก
Chip Bennett

เป็นสิ่งพิเศษที่ฉันคิดว่า - โพสต์ถูกนำเข้าสู่เซิร์ฟเวอร์ท้องถิ่นของฉันจากเว็บไซต์สดโดยใช้ผู้ส่งออก / ผู้นำเข้า wordpress โพสต์ต้นฉบับทั้งหมดมีภาพที่โดดเด่นซึ่งหายไปอย่างเห็นได้ชัดในกระบวนการนำเข้า นั่นอาจหมายความว่าแม้ว่าภาพเด่น ๆ จะถูกลบออกไป แต่เมตาคีย์ยังคงเป็นสาเหตุทำให้ข้อความค้นหาสับสน
harryg

เมื่อคุณรันการนำเข้าคุณทำเครื่องหมายในช่องเพื่อดาวน์โหลดและแนบไฟล์แนบ / สื่อทั้งหมดหรือไม่ หากคุณไม่ทำเช่นนั้นภาพเด่นของคุณจะไม่ทำงาน โพสต์จะมีรูปภาพเด่น แต่จะอ้างอิงถึงไฟล์แนบที่ไม่มีอยู่และจะไม่ปรากฏขึ้นอีกเลย
Tom J Nowell

ใช่ฉันทำเครื่องหมายในช่องเมื่อนำเข้า
harryg

คำตอบ:


3

เมื่อเรียกใช้ผู้นำเข้าคุณต้องทำเครื่องหมายในช่องเพื่อดาวน์โหลดและนำเข้าสื่อ / ไฟล์แนบทั้งหมด

หากคุณไม่โพสต์จะยังคงมีชุดภาพเด่น แต่สิ่งที่แนบที่อ้างถึงจะไม่ถูกต้องและความพยายามในการโทรใด ๆthe_post_thumbnailจะล้มเหลว ใช้รหัสของคุณคุณจะได้รับเพียงชื่อโพสต์และไม่มีภาพขนาดย่อ นี่จะทำให้เกิดความประทับใจเมื่อมีการดึงโพสต์ที่ไม่มีภาพเด่นในกรณีนี้พวกเขามีภาพที่โดดเด่น แต่ไม่สามารถใช้งานได้เนื่องจากความผิดพลาดที่คุณทำเมื่อนำเข้า

ลบโพสต์ของคุณและนำเข้าอีกครั้งโดยใช้การตั้งค่าที่ถูกต้อง

นอกจากนี้เพื่อแสดงจุดคุณไม่ได้พยายามตรวจสอบการโพสต์ตรวจสอบเช่น:

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>';
}

หากคุณไม่ได้ทำเครื่องหมายที่ช่องทำเครื่องหมายคุณจะได้รับภาพที่บอกว่ามีภาพเด่น แต่ไม่มีภาพใดแสดง


1
ฉันสงสัยว่านี่คือเหตุผลที่คำตอบที่ฉันให้ไว้ไม่ทำงานอย่างที่คาดไว้ WordPress ฆ่าตัวตายปลั๊กอินเป็นประโยชน์สวยสำหรับการลบเนื้อหาทั้งหมด
helgatheviking

ฉันตรวจสอบกล่องนั้นอย่างแน่นอน อย่างไรก็ตามในประสบการณ์ของฉันมันไม่เคยทำงานให้ฉัน รูปภาพทั้งหมดถูกลิงค์กลับไปที่ไซต์ภายนอก ฉันใช้ปลั๊กอินนำเข้ารูปภาพภายนอก ( wordpress.org/extend/plugins/import-external-images ) เพื่อจัดเก็บภาพในเครื่องและแนบไฟล์
harryg

ฉันมีความคิดเดียวกันฉันเลือกกล่องแน่นอนทำไมมันไม่ทำงานยัง? ฉันได้รับจากลูกค้าและเป็นเรื่องง่ายที่จะผิดพลาดดังนั้นลบโพสต์ของคุณนำเข้าอีกครั้งและตรวจสอบให้แน่ใจว่าได้ตรวจสอบแล้วและหากยังไม่ได้ผลคุณสามารถแยกแยะออกได้ มิฉะนั้นจะมี Neil DeGrasse Tyson พูดคุยเกี่ยวกับความทรงจำของมนุษย์ที่อ่อนแออย่างน่าสงสาร ตอนนี้ฉันสามารถขอให้คุณยกเลิกการเลือกช่องทำเครื่องหมายที่สองและคุณอาจจำได้ว่าเห็นเช่นกัน (แต่ไม่มีสักอัน)
Tom J Nowell

และในระหว่างนั้นthe_post_thumbnailให้has_thumbnailโทรและเพิ่มอีกกรณีเพื่อให้คุณรู้ได้อย่างชัดเจนว่าโพสต์ไม่มีภาพเด่น
Tom J Nowell

ตรวจสอบให้แน่ใจด้วยว่าเซิร์ฟเวอร์ของคุณสามารถเข้าถึงเซิร์ฟเวอร์ระยะไกลได้ หากเซิร์ฟเวอร์ของคุณไม่สามารถรับคำขอจากระยะไกลได้เซิร์ฟเวอร์จะไม่สามารถนำเข้าได้ คุณอาจต้องลบสิ่งที่แนบมากับสื่อที่ถูกจับไปแล้ว
Tom J Nowell

24

ในฐานะของ WordPress 3.5 พารามิเตอร์ Meta QueryสนับสนุนEXISTSและNOT EXISTSเปรียบเทียบโอเปอเรเตอร์ ในกรณีที่คุณใช้สิ่งเหล่านี้คุณสามารถละเว้นvalueส่วนของแบบสอบถามเมตา ลองใช้อาร์กิวเมนต์ต่อไปนี้สำหรับการค้นหาของคุณ:

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

ขอบคุณสำหรับคำแนะนำ ตอนนี้ฉันได้รับ 6 โพสต์ แต่ยังได้รับโพสต์โดยไม่มีภาพขนาดย่อ
harryg

ฉันทดสอบและใช้งานได้สำหรับฉัน แต่ฉันสังเกตว่ามันจะส่งคืนเอนทิตีที่มีการตั้งค่าเมตา แต่ด้วยเหตุผลบางอย่างที่ ID สิ่งที่แนบมานั้นไม่ถูกต้อง ดังนั้นตรวจสอบอีกครั้งว่าโพสต์ของคุณมีชุดภาพเด่น ไม่เช่นนั้นฉันก็ไม่รู้ว่าจะเกิดปัญหาอะไรขึ้น
helgatheviking

แล้วคุณช่วยยืนยันว่าคุณใช้ v3.5 หรือใหม่กว่าได้หรือไม่?
Tom J Nowell

ใช่ฉันใช้งาน WordPress เวอร์ชันล่าสุดติดตั้งบนเซิร์ฟเวอร์ dev ในพื้นที่ของฉันเป็นเครือข่าย (หลายไซต์)
harryg

2
ข้อมูลเพิ่มเติมบางส่วนเท่านั้น: มีข้อผิดพลาดที่ไม่สามารถแก้ไขได้ให้ดูที่trac ticket 23268ซึ่งทำให้จำเป็นต้องใช้ค่าหากNOT EXISTSใช้
Nicolai
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.