Bị hỏng? Phần đính kèm WP_Query và phần mềm cứng như một loại bài đăng


18

Tôi có một bộ sưu tập kèm theo một trang. Trên trang đó, tôi đang chạy truy vấn sau:

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

Tôi đã thử nghiệm khá nhiều cách và, vì một số lý do, tôi không thể lấy lại tệp đính kèm. Tôi có thiếu một cái gì đó rõ ràng ở đây?

Cập nhật *

Cảm ơn bạn đã chỉ cho tôi đi đúng hướng.

Hóa ra tôi đã sử dụng "trạng thái" thay vì "post_status". Codex đã sử dụng "trạng thái" làm ví dụ trong phần giải thích trong ngữ cảnh của loại bài đăng "đính kèm". Thay vào đó, tôi đã cập nhật codex để tham khảo "post_status". Mã chính xác như sau:

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

Tôi tự hỏi những gì là sự khác biệt giữa post_status là thiết lập để 'null' vs 'kế thừa''
Wok

Bạn vừa cứu tôi rất nhiều nỗi đau với 'post_status' => 'inherit' Cảm ơn!
Pat

Câu trả lời:


14

Đây là các tham số truy vấn tôi sử dụng ... hoạt động với tôi khi tôi lặp qua các kết quả

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

13

Thêm vào $args, nó rất quan trọng.

'post_status' => 'any'

Đừng: 'post_status' => null

Đây là quan trọng bởi vì file đính kèm không có post_status, vì vậy giá trị mặc định cho post_status, publishedsẽ tìm thấy không có file đính kèm.


Hãy cố gắng giải thích câu trả lời, thay vì chỉ đăng một hoặc hai dòng mã.
s_ha_dum

Vâng, làm thế nào điều này hoạt động? Tôi không thể có tệp đính kèm của mình để hiển thị trong trang lưu trữ của mình cho đến khi tôi thêm phần này.
Claire

0

Nhìn vào truy vấn mà nó tạo ra, nó dường như là một lỗi của các loại. 'status' => 'thừa kế' được hiểu là trạng thái của cha mẹ, khi mục nhập trong db cho tệp đính kèm có nghĩa đen là 'kế thừa'.

Một cách khác là sử dụng get_children thay cho WP_Query.


0

Tôi đã có thể hiển thị tất cả các hình ảnh được đính kèm vào bài đăng bằng mã này.

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

Và để lặp lại URL của hình ảnh kích thước đầy đủ ban đầu, bạn có thể liên kết hình ảnh đó với

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

Hy vọng rằng đây là một cách tiếp cận với những gì bạn đang cố gắng làm.


Liệu phân trang làm việc với điều đó? Và bạn có thể hiển thị phần còn lại của mã đầu ra của bạn? Tôi đang ở giữa mã hóa lại một bộ sưu tập chủ đề để thực sự phân trang các tệp đính kèm trên trang. Cảm ơn!

Nếu tôi tải lên 4 hình ảnh lên một bài đăng và tôi thêm nó vào div mục nhập nội dung chính trong single.php, nó sẽ chỉ nhổ ra 4 thẻ hình ảnh. Src = của mỗi cái sẽ dẫn đến kích thước hình ảnh lớn ban đầu. Phân trang không hoạt động với điều này, vì nó phun ra bất kỳ và tất cả các hình ảnh được đính kèm vào bài viết.
Chad Von Lind
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.