实现这一点的一种方法是建立两个查询/循环,一个处理特色帖子,另一个处理所有其他帖子(特色帖子除外)。
你如何区分什么是和什么不是featured post 可以由special placeholder category 或使用custom field, 后者比将类别列表与没有实际价值的占位符类别混在一起更合适。
因此,让我们假设对于您想要成为的帖子featured 您分配的custom field 使用meta_key
属于featured_post
meta\\u值为1
.
然后在模板文件中执行类似的操作;
$args = array(
\'posts_per_page\' => 1,
\'post_type\' => \'your_post_type\',
\'order\' => \'DESC\',
\'meta_query\' => array(
array(
\'key\' => \'featured_post\',
\'value\' => \'1\',
)
)
);
$first_query = new WP_Query( $args );
if ( $first_query->have_posts() ):
while( $first_query->have_posts() ) : $first_query->the_post();
echo \'<div class="featured_post">\';
//your desired output here....
echo \'</div>\';
endwhile;
endif;
wp_reset_postdata();
$args = array(
\'posts_per_page\' => 9,
\'post_type\' => \'your_post_type\',
\'meta_query\' => array(
array(
\'key\' => \'featured_post\',
\'value\' => \'1\',
\'compare\' => \'NOT LIKE\' //or NOT or != should suffice
)
)
);
$second_query = new WP_Query( $args );
if ( $second_query->have_posts() ):
while( $second_query->have_posts() ) : $second_query->the_post();
echo \'<div class="regular_posts">\';
//your desired output here....
echo \'</div>\';
endwhile;
endif;
wp_reset_postdata();
您可能有一些问题。。。
Q: 如果我使用featured_post
关键和价值1
忘记编辑以前的特色帖子?
在这种情况下,参数;\'order\' => \'DESC\'
显示在控制特色帖子显示的第一个查询中,将显示最近分配给帖子元键/值配对的基于DATE
按时间顺序从最新发布日期到最年长日期。
Q: ...但是,如果我想显示一个随机日期的特色帖子,并且一个日期更近的帖子已经被分配了帖子元,会发生什么呢key/value
一对
在这种情况下,您需要记住删除post metakey/value
从任何按日期更新的特色帖子中配对,以便旧帖子与帖子元key/value
配对可以优先。
Q: 还有其他方法吗?
当然是!根据您的要求,我们还可以通过其他方式为第一个查询分配特色帖子,从而可能更容易管理更改,这可能包括使用custom constructed meta boxes 显示您当前分配的此帖子类型的特色帖子,并提供一种在全球范围内更改特色帖子的方法,即使在帖子编辑屏幕内也是如此。如果您的需求超过了上述解决方案,我们可以更仔细地研究这一点。
一些有用的法典资源: