对于post_type附件,get_posts()始终为空

时间:2013-05-14 17:37:58

标签: wordpress

在处理Wordpress主题时,我正在努力解决以下问题:

正如标题所示,get_posts()返回的数组经常是空的,尽管帖子肯定是有图像。

我使用以下方法检索附件数组:

$attachments = get_posts( array(
    'post_type' => 'attachment',
    'posts_per_page' => -1,
    'post_parent' => $post_id
) );

现在,$ post_id工作得很好......如果我在上面的片段之前回复它,它会毫无疑问地显示出来。我无法弄清楚错误的位置。

为了完整起见,继承了整个循环,除了附件检索外,它在各个方面都完美无缺:

           <?php if (have_posts()) : ?>
            <?php while (have_posts()) : ?>
                <?php the_post(); ?>
                <div class="post" id="post-<?php the_ID(); ?>">
                    <div class="post-border">
                        <div class="post-date"><?php edit_post_link('Edit Post', '', ''); ?></div>
                        <?php if($pagename == 'news'): ?>
                            <div class="post-date">Posted: <?php the_time('F j, Y') ?></div>
                        <?php endif; ?>
                        <h5 class="posttitle"><?php the_title(); ?></h5>
                        <div class="post-entry">
                            <?php the_content(); ?>
                            <?php
                                $post_id = $post -> ID;
                                echo $post_id;
                                $attachments = get_posts( array(
                                    'post_type' => 'attachment',
                                    'posts_per_page' => 20,
                                    'post_parent' => $post_id
                                ) );
                                print_r($attachments);
                            ?>
                        <?php echo "<div class='clearboth'></div>"; ?>
                        </div> <!-- end of .entry -->
                    </div> <!-- end of .post-border -->
                </div> <!-- end of .post -->
            <?php endwhile; ?>
        <?php endif; ?>

如果有人有任何建议我会非常感激!

最佳, Ĵ

4 个答案:

答案 0 :(得分:3)

附件从父帖子继承post_status,因此将以下内容添加到args:

'post_status' => 'inherit',

答案 1 :(得分:1)

我在Wordpress 4.1中发现,当您从先前上传到媒体库的图像中插入图像时,它不会被视为附件。因此,为了为帖子创建图像附件,应首先将图像作为文件上载到媒体库(“添加媒体 - ”上传文件),然后才选择并插入帖子。

答案 2 :(得分:0)

确保图像附在该帖子上,而不是仅插入帖子中。

  

“如果在编辑屏幕上上传媒体文件,它将自动附加到正在编辑的&gt;当前帖子。如果通过媒体添加新子面板或媒体库&gt;子面板上传,它将被取消,但是当它插入&gt; post时可能会附加到帖子上。媒体库子面板上还有一个选项可以附加未附加的媒体&gt;项目。“

答案 3 :(得分:0)

需要注意的另一个问题是:如果您使用的是使用WP功能的命令行脚本,请确保有一个有效的登录用户(例如admin)。否则get_posts()将不会返回任何通常不公开的帖子(例如草稿或预定帖子的附件)。用wp_set_current_user(1,'admin');

之类的东西很容易实现