我有一个自定义的帖子类型和一个自定义的分类法,用于对帖子进行分类。
我正在尝试开发一个短代码,使我能够输出属于特定用途的工作库帖子。我想这相当于一个类别归档查询,只是我希望能够在不同的页面上使用它。
代码如下所示:
function wg_album($wguse){
extract(shortcode_atts(
array(\'use\' => \'work\'), $wguse));
$args = array(
\'post_type\' => \'work-gallery\',
\'tax_query\' => array(
array(
\'taxonomy\' => \'use\',
\'field\' => \'slug\',
\'terms\' => $use
)
)
);
$work_galleries = new WP_Query($args);
ob_start(); ?>
<ul class="work-pages">
<?php foreach ($work_galleries as $work_gallery) { ?>
<li>
<a href="<?php echo get_page_link( $work_gallery -> ID ); //the permalink?>">
<?php echo get_the_post_thumbnail($work_gallery -> ID)//the featured image?>
<h3><?php echo $work_gallery -> post_title ; ?></h3>
<p> <?php echo $work_gallery -> post_excerpt ; ?></p>
</a>
</li>
<?php } ?>
</ul>
<?php return ob_get_clean();
} ?>
我得到的不是像代码中那样的永久链接、标题、特色图片和摘录的输出,而是主机页的永久链接,迭代了40次!
我做错了什么?我认为问题出在查询中。
最合适的回答,由SO网友:s_ha_dum 整理而成
这是一个非常破碎的循环。新的WP_Query
不是一个简单的数组foreach
结束这远比这复杂得多。尝试var_dump($work_galleries);
.
幸运地WP_Query
提供使循环更容易的方法。
$work_galleries = new WP_Query($args);
if ($work_galleries->have_posts()) {
while ($work_galleries->have_posts()) { // this replaces foreach
$work_galleries->the_post(); // this sets up the post data so functions like the_title() work
// now your code
}
}