通过id从单页获取附件,并将其分页。 (WordPress的)

时间:2017-03-30 10:01:03

标签: php wordpress

如何按ID从单页获取附件,并在每页设置12 img?

' post_parent' => 145,//不工作,但没有这个参数我得到所有附件

<?php
                $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
                $attachment = new WP_Query( array(
                    'post_parent' => 145, // not working, but without this param I get all attachments
                    'post_status' => 'inherit',
                    'post_type' => 'attachment',
                    'post_mime_type' => 'image/jpeg,image/gif,image/jpg,image/png',
                    'posts_per_page'  => 12,
                    'paged'           => $paged
                ) );
                if ( $attachment->have_posts() ) :
                    while ( $attachment->have_posts() ) : $attachment->the_post(); 

            ?>
                        <div class="gallery__item"><a href="<?php echo wp_get_attachment_url( $attachment->ID , false ); ?>" data-fancybox><img src="<?php echo wp_get_attachment_url( $attachment->ID , false ); ?>" alt=""></a></div>
            <?php

                    endwhile; 
                    wp_reset_postdata();
                endif;
            ?>

2 个答案:

答案 0 :(得分:0)

通过查看代码,您正在使用 post_parent ,这在

中很清楚

Codex WP Query

基本上说只有有孩子的帖子才会返回当前提供的帖子ID,即145.

我认为你必须使用 post_parent__in 而不是当前的。

希望这适合你。

谢谢

答案 1 :(得分:0)

我发现了问题所在。我使用 post_parent 并告诉帖子ID,认为从这篇文章中获取所有附件,但是WP_Query会返回我的ID图像。

我使用 get_post_gallery()

获取数组中所有图片的ID
$gal = get_post_gallery(11,false);

并将其爆炸

$ids = explode(',', $gal['ids']);

之后一切正常!

我也使用 post__in insted post_parent

最终代码:

<?php
                $gal = get_post_gallery(11,false);
                $ids = explode(',', $gal['ids']);
                $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
                $attachment = new WP_Query( array(
                    'post__in' => $ids,
                    'post_status' => 'inherit',
                    'post_type' => 'attachment',
                    'post_mime_type' => 'image/jpeg,image/gif,image/jpg,image/png',
                    'posts_per_page'  => 12,
                    'paged'           => $paged
                ) );
                if ($attachment -> have_posts() ) :
                    while ($attachment -> have_posts() ) : $attachment -> the_post(); 
            ?>
                        <div class="gallery__item"><a href="<?php echo wp_get_attachment_url(); ?>" data-fancybox><img src="<?php echo wp_get_attachment_url(); ?>" alt=""></a></div>
            <?php

                    endwhile; 
                    wp_reset_postdata();
                endif;
            ?>