基本上,我想展示标有"精选"的商品。首先,然后显示所有没有标记"精选的项目,然后对结果进行分页。
$featured = array(
'post_type' => 'aircraft-refueling',
'tag' => 'featured'
);
$not_featured = array(
'post_type' => 'aircraft-refueling',
'tag__not_in' => array('592')
);
这是分页:
function pagination()
{
global $wp_query;
$big = 999999999;
echo paginate_links(array(
'base' => str_replace($big, '%#%', get_pagenum_link($big)),
'format' => '?paged=%#%',
'current' => max(1, get_query_var('paged')),
'total' => $wp_query->max_num_pages
));
}
我对PHP不太熟悉,但我猜我需要将查询合并到一个新查询中,然后对该新查询进行分页?非常感谢帮助!如果有更好的方法,请提供建议。
编辑:这是我的进步。我几乎得到它的工作,但我得到这个代码的错误,即使它看起来很好......?<?php
$featured = get_posts(array(
'post_type' => 'aircraft-refueling',
'tag' => 'featured'
));
$notfeatured = get_posts(array(
'post_type' => 'aircraft-refueling',
'tag__not_in' => array('592')
));
$mergedposts = array_merge( $featured, $notfeatured );
$postids = array();
foreach( $mergedposts as $item ) {
$postids[]=$item->ID;
}
$uniqueposts = array_unique($postids);
$posts = get_posts(array(
'post__in' => $uniqueposts,
'post_type' => 'aircraft-refueling',
'post_status' => 'publish'
));
foreach( $posts as $post ) :
setup_postdata($post);
?>
然后是标准查询:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
// THE CONTENT
<?php endwhile; ?>
<?php endif; ?>
答案 0 :(得分:0)
根据上面提供的代码,我无法确定如何运行显示数据的循环。 如果你这样做了:
<?php foreach( $posts as $post ) :
setup_postdata($post);
endforeach; ?>
然后没有必要从第二个循环:
while ( have_posts() ) : the_post(); ?>
// THE CONTENT
<?php endwhile; ?>
因为setup_postdata()
和the_post()
基本相同 - 他们使用来自循环的数据设置全局$post
对象,因此像the_title(), the_ID()
..这样的模板标签可以正常工作。< / p>
所以你必须这样做:
如果您使用query_posts()
foreach ($posts as $post):
setup_postdata($post)
//THE CONTENT (the_title(), the_ID() will work
endforeach;
或者如果你使用WP_Query()
- 我认为这是最好的方式
$posts = new WP_Query(array(
'post__in' => $uniqueposts,
'post_type' => 'aircraft-refueling',
'post_status' => 'publish'
));
if( $posts->have_posts()):
while($posts->have_posts()): $posts->the_post()
//THE CONTENT (the_title(), the_ID() will work
endwhile;
endif;
在这两种情况下,您必须在循环后执行wp_reset_postdata()
在许多情况下,如果您使用custom_post_types进行查询,则会破坏分页:) 如果是这种情况:css-tricks
最后:你需要这个array_unique
检查吗?帖子或有或没有这个标签......