Nhận tất cả hình ảnh từ một trang bằng truy vấn này


7

Tôi đang gặp một số rắc rối với mã widget mẫu này. Tôi muốn lấy tất cả hình ảnh (Trừ hình thu nhỏ của bài đăng) từ một trang có tên "Thư viện" nhưng vì một số lý do, điều này đang kéo tất cả hình ảnh được tải lên từ toàn bộ trang web.

Ngoài ra, làm cách nào để loại trừ hình thu nhỏ của bài đăng khỏi truy vấn này?

  query_posts('pagename=gallery');
if (have_posts()) : 
echo "<ul class='recentwidget group photowidget'>";
while (have_posts()) : the_post();
    $args = array(
    'post_type' => 'attachment',
    'numberposts' => 1,
    'post_status' => null,
    'post_parent' => $post->ID
);

$attachments = get_posts( $args );
    if ( $attachments ) {
    foreach ( $attachments as $attachment ) {
       echo '<li class="left imageshadow photolarge">';
       echo wp_get_attachment_image( $attachment->ID, 'full' );
       echo '</li>';
      }
    }
endwhile;

endif; 
wp_reset_query();

Rõ ràng việc sử dụng query_postskhông phải là không có nhược điểm . Bạn đã thử sử dụng get_poststhay thế? Nhưng sau đó, tôi nghĩ rằng việc sử dụng The Loop trong trường hợp này là quá mức cần thiết. Chỉ cần mã hóa ID trang vào cuộc gọi của bạn get_posts(hiện đang ở trong Vòng lặp).
Raphael

Thật không may, khách hàng của tôi là một fan hâm mộ của query_posts (Phải làm gì đó để họ có thể chỉnh sửa nó sau này nếu họ cần). Có cách nào để làm điều đó bằng query_posts không?
Dean Elliott

Không xin lỗi. Tôi chưa thực sự làm điều gì đó như thế này và từ việc lướt qua Codex, mã của bạn có vẻ hợp lý với tôi (bên cạnh kiểu mã hóa ho ). Ồ, đó là hợp đồng làm việc. Trong trường hợp đó, bạn có thể muốn bọc tính năng của mình vào một plugin nhỏ với một trang tùy chọn để họ không thể phá vỡ nó (và bạn có thể sử dụng lại nó). Thậm chí có thể sử dụng một plugin hiện có ?
Raphael


Ngoài ra, tôi sẽ khuyên bạn nên sử dụng WP_query nếu bạn đang tạo các vòng lặp thứ cấp, ví dụ như trong các widget. nhưng nếu bạn phải sử dụng hàm query_posts để thay đổi vòng lặp chính, hãy nhớ thêm phân trang vào danh sách đối số query_posts. scribu.net/wordpress/wp-pagenavi/ từ
Ole Henrik Skogstrøm

Câu trả lời:


8

Sử dụng get_children

Tôi đã sử dụng mã này để trích xuất tất cả các hình ảnh từ một bộ sưu tập trang theo thứ tự được chọn. bạn có thể bao gồm mã này trong vòng lặp hoặc sử dụng nó độc lập. chỉ cần chọn mã post_parent thích hợp (xem bên dưới ví dụ mã).

Ví dụ này hiển thị tất cả các hình ảnh liên quan đến id trang 1, hãy xem:

        $images = get_children( array( 'post_parent' => 1, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order', 'order' => 'ASC', 'numberposts' => 999 ) ); 
/* $images is now a object that contains all images (related to post id 1) and their information ordered like the gallery interface. */
        if ( $images ) { 

                //looping through the images
                foreach ( $images as $attachment_id => $attachment ) {
                ?>

                            <?php /* Outputs the image like this: <img src="" alt="" title="" width="" height="" /> */  ?> 
                            <?php echo wp_get_attachment_image( $attachment_id, 'full' ); ?>

                            This is the Caption:<br/>
                            <?php echo $attachment->post_excerpt; ?>

                            This is the Description:<br/>
                            <?php echo $attachment->post_content; ?>

                <?php
                }
        }

Tìm id bài đăng bạn muốn trích xuất hình ảnh và chèn nó vào đối số này: 'post_parent' => 1(thay thế 1 bằng id trang của bạn)

bạn cũng có thể dùng:

'post_parent' => $post->ID

Nếu bạn muốn sử dụng get_children trong một vòng lặp và lấy id bài đăng từ id bài đăng được trả lại.

Nếu bạn muốn loại trừ hình ảnh được chọn làm hình ảnh nổi bật, tôi sẽ ifkiểm tra câu lệnh xem URL hình ảnh có bằng URL hình ảnh nổi bật không.

Hi vọng điêu nay co ich! :)


Điều này làm việc hoàn hảo. Mặc dù, có cách nào để thay đổi đầu ra của hình ảnh? Ví dụ, thêm một lớp cụ thể cho họ?
Dean Elliott

Rất vui được giúp đỡ :) nếu bạn thêm mảng này vào danh sách các đối số cho hàm wp_get_attachment_image như thế này: wp_get_attachment_image ($ Attach_id, 'full', mảng ('class' => "your-calss"); Tôi tin rằng bạn nhận được effekt mong muốn, mặc dù đã cố gắng.
Ole Henrik Skogstrøm


1
Cảm ơn vì điều đó. Cuối cùng, tôi chỉ gói đầu ra hình ảnh vào một danh sách và tôi đã có được hiệu ứng mong muốn.
Dean Elliott

-1

Cách dễ nhất là sử dụng get_attached_media(). Có nhiều cách khác nhau, hầu hết tất cả đều được đề cập ở đây


Vui lòng chỉnh sửa câu trả lời của bạn và ít nhất thêm một bản tóm tắt của tất cả các cách và sau đó chia sẻ liên kết. Một câu trả lời chỉ liên kết sẽ trở nên không liên quan khi liên kết bị chết.
Hồi giáo Mayeenul
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.