在处理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; ?>
如果有人有任何建议我会非常感激!
最佳, Ĵ
答案 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');