3

在处理 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; ?>

如果有人有任何建议,我将不胜感激!

最佳,J

4

5 回答 5

3

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

'post_status' => 'inherit',
于 2013-05-14T18:56:46.487 回答
1

确保图像附加到该帖子,而不仅仅是插入帖子正文。

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

于 2013-08-21T13:48:38.143 回答
1

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

于 2015-01-20T15:29:31.887 回答
0

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

于 2013-10-01T19:38:22.343 回答
0

问题是附件有 post_status == 'inherit' 而不是 'publish' 所以我会尝试添加

$query['post_status'] = [ 'publish', 'inherit' ];

到你的论点列表。

请注意,这可能会得到比预期更多的结果,因为 post_type == 'post' 和 post_status == 'inherit' 也将被返回。您可能应该执行两个单独的查询。这只是解释为什么您的组合查询不能按预期工作。

原因

$query['post_type'] = 'attachment';

工作是 WordPress 在 get_posts() 中有以下代码

if ( empty( $r['post_status'] ) )
    $r['post_status'] = ( 'attachment' == $r['post_type'] ) ? 'inherit' : 'publish';
}
于 2021-10-18T08:23:25.580 回答