Broken? WP_Query และ“ สิ่งที่แนบมา” เป็นประเภทโพสต์


18

ฉันมีแกลเลอรี่ที่แนบมากับหน้า ในหน้านั้นฉันกำลังเรียกใช้แบบสอบถามต่อไปนี้:

$events_gallery = new WP_Query( // Start a new query for our videos
array(
    'post_parent' => $post->ID, // Get data from the current post
    'post_type' => 'attachment', // Only bring back attachments
    'post_mime_type' => 'image', // Only bring back attachments that are images
    'posts_per_page' => '3', // Show us the first three results
    'status' => 'inherit', // Inherit the status of the parent post 
    'orderby' => 'rand', // Order the attachments randomly  
    )
);

ฉันทดลองหลายวิธีแล้วด้วยเหตุผลบางอย่างฉันไม่สามารถรับสิ่งที่แนบมาเพื่อส่งคืนได้ ฉันขาดอะไรบางอย่างชัดเจนที่นี่?

ปรับปรุง *

ขอบคุณ Wok ที่ชี้ให้ฉันไปในทิศทางที่ถูกต้อง

ปรากฎว่าฉันใช้ "สถานะ" แทน "post_status" Codex ใช้ "สถานะ" เป็นตัวอย่างในคำอธิบายในบริบทของประเภทโพสต์ "ไฟล์แนบ" ฉันอัปเดต codex เพื่ออ้างอิง "post_status" แทน รหัสที่ถูกต้องมีดังนี้:

$events_gallery = new WP_Query( // Start a new query for our videos
array(
    'post_parent' => $post->ID, // Get data from the current post
    'post_type' => 'attachment', // Only bring back attachments
    'post_mime_type' => 'image', // Only bring back attachments that are images
    'posts_per_page' => '3', // Show us the first three results
    'post_status' => 'inherit', // Attachments default to "inherit", rather than published. Use "inherit" or "any".
    'orderby' => 'rand', // Order the attachments randomly  
    )
);  

ฉันสงสัยว่าความแตกต่างระหว่าง post_status จะถูกตั้งค่าเป็น 'null' vs 'inherit' '
Wok

คุณแค่ช่วยชีวิตฉันด้วยความเจ็บปวดด้วย'post_status' => 'inherit' Thanks!
Pat

คำตอบ:


14

นี่คือพารามิเตอร์เคียวรีที่ฉันใช้ ... ใช้ได้สำหรับฉันเมื่อฉันวนลูปผ่านผลลัพธ์

array(
                'post_parent' => $post->ID,
                'post_status' => 'inherit',
                'post_type'=> 'attachment',
                'post_mime_type' => 'image/jpeg,image/gif,image/jpg,image/png'                  
            );

13

เพิ่ม$argsเข้าไปเป็นสิ่งสำคัญ

'post_status' => 'any'

อย่า: 'post_status' => null

นี้เป็นสิ่งสำคัญเพราะสิ่งที่แนบมาไม่ได้มีpost_statusเพื่อให้ค่าเริ่มต้นสำหรับpost_status, publishedจะได้พบกับสิ่งที่แนบมาไม่มี


โปรดใช้ความพยายามในการอธิบายคำตอบมากกว่าเพียงแค่โพสต์บรรทัดหรือสองโค้ด
s_ha_dum

ใช่แล้วมันใช้งานได้อย่างไร ฉันไม่สามารถรับสิ่งที่แนบมาเพื่อแสดงในหน้าเก็บถาวรของฉันจนกว่าฉันจะเพิ่มสิ่งนี้
แคลร์

0

เมื่อดูที่การสืบค้นที่สร้างขึ้นมันจะดูเหมือนเป็นข้อผิดพลาดแปลก ๆ 'status' => 'inherit' ถูกตีความว่าเป็นสถานะของพาเรนต์เมื่อรายการใน db สำหรับสิ่งที่แนบนั้นเป็น 'สืบทอด' อย่างแท้จริง

อีกทางเลือกหนึ่งคือใช้ get_children แทน WP_Query


0

ฉันสามารถแสดงรูปภาพทั้งหมดที่แนบมากับโพสต์โดยใช้รหัสนี้

<?php
$args = array( 'post_type' => 'attachment', 'orderby' => 'menu_order', 'order' => 'ASC', 'post_mime_type' => 'image' ,'post_status' => null, 'post_parent' => $post->ID );
$attachments = get_posts($args);
    if ($attachments) {
    foreach ( $attachments as $attachment ) { ?>
      <img src="<?php echo wp_get_attachment_url( $attachment->ID , false ); ?>" />
<?php   }
    } ?>

และหากต้องการสะท้อน URL ของภาพขนาดเต็มต้นฉบับคุณสามารถลิงก์ภาพนั้นออกได้

<?php echo wp_get_attachment_url( $attachment->ID , false ); ?>

หวังว่านี่เป็นวิธีการที่คุณพยายามทำ


เลขหน้าใช้กับสิ่งนั้นได้หรือไม่? และคุณสามารถแสดงรหัสที่เหลือของคุณได้หรือไม่? ฉันอยู่ในระหว่างการเข้ารหัสอีกครั้งที่แกลเลอรีชุดรูปแบบเพื่อให้เลขหน้าสิ่งที่แนบที่อยู่บนหน้า ขอบคุณ!

ถ้าฉันอัปโหลด 4 ภาพไปยังโพสต์และฉันเพิ่มลงใน div รายการเนื้อหาหลักใน single.php มันจะคายแท็กรูปภาพ 4 แท็กออก src = ของแต่ละอันจะนำไปสู่ขนาดภาพต้นฉบับขนาดใหญ่ การแบ่งหน้าไม่ทำงานกับสิ่งนี้เนื่องจากมันพ่นภาพใด ๆ และทุกภาพที่แนบมากับโพสต์
Chad Von Lind
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.