Rusak? WP_Query dan "lampiran" sebagai jenis posting

18

Saya memiliki galeri yang dilampirkan ke sebuah halaman. Di halaman itu, saya menjalankan kueri berikut:

$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  
    )
);

Saya telah mencoba beberapa cara dan, untuk beberapa alasan, saya tidak bisa mendapatkan keterikatan untuk kembali. Apakah saya melewatkan sesuatu yang jelas di sini?

Memperbarui*

Terima kasih kepada Wok karena mengarahkan saya ke arah yang benar.

Ternyata saya menggunakan "status" alih-alih "post_status". Codex telah menggunakan "status" sebagai contoh dalam penjelasan dalam konteksnya tentang tipe posting "lampiran". Saya memperbarui codex untuk referensi "post_status" sebagai gantinya. Kode yang benar adalah sebagai berikut:

$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  
    )
);  
Jonathan Wold
sumber
Saya bertanya-tanya apa bedanya antara post_status yang diatur ke 'null' vs 'inherit' '
Wok
Anda baru saja menyelamatkan saya dari banyak rasa sakit dengan 'post_status' => 'inherit' Terima kasih!
Pat

Jawaban:

14

Ini adalah parameter kueri yang saya gunakan ... berfungsi untuk saya ketika saya mengulangi hasilnya

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

Tambahkan $args, itu penting.

'post_status' => 'any'

Tidak: 'post_status' => null

Hal ini penting karena lampiran tidak memiliki post_status, sehingga nilai default untuk post_status, published, akan menemukan lampiran.

Pham
sumber
Harap berusaha menjelaskan jawabannya, daripada hanya mengirim satu atau dua baris kode.
s_ha_dum
Ya, bagaimana ini bisa berhasil? Saya tidak bisa mendapatkan lampiran saya muncul di halaman arsip saya sampai saya menambahkan ini.
Claire
0

Melihat kueri yang dihasilkannya, tampaknya ada semacam bug. 'status' => 'inherit' diartikan sebagai status induk, ketika entri dalam db untuk lampiran secara harfiah 'inherit'.

Alternatifnya adalah menggunakan get_children sebagai ganti WP_Query.

Milo
sumber
0

Saya sudah bisa menampilkan semua gambar yang merupakan lampiran ke posting menggunakan kode ini.

<?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   }
    } ?>

Dan untuk menggemakan URL gambar ukuran penuh asli, Anda dapat menautkan gambar itu ke

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

Semoga ini adalah pendekatan untuk apa yang Anda coba lakukan.

Chad Von Lind
sumber
Apakah pagination bekerja dengan itu? Dan bisakah Anda menunjukkan sisa kode output Anda? Saya sedang melakukan pengodean ulang sebuah galeri tema untuk benar-benar membuat pagination pada lampiran yang ada di halaman. Terima kasih!
Jika saya mengunggah 4 gambar ke posting, dan saya menambahkan ini ke entri entri konten utama di single.php, itu hanya akan memuntahkan 4 tag gambar. Src = masing-masing akan mengarah ke ukuran gambar besar asli. Pagination tidak berfungsi dengan ini, karena meludahkan setiap dan semua gambar yang dilampirkan pada posting.
Chad Von Lind