我在网站上工作并构建自定义帖子类型。在这个自定义帖子类型中,我添加了一个元字段,您可以在其中选择1到16之间的数字。这些数字与我主页上的特定位置相对应。但现在我的问题出现了。如何在不重复的情况下在这些特定位置查询这些帖子。
所以例如......
这里有一个meta值为1的帖子 这里有一个meta值为2的帖子 这里有一个meta值为3的帖子等..
希望有人可以帮助我一点
答案 0 :(得分:0)
根据布局逻辑的复杂程度,有几种方法可以解决这个问题。如果您基本上只需按顺序遍历16个帖子,则可以使用查询中的orderby
参数对帖子进行排序:
$args = array(
'post-type' => 'YOUR_POST_TYPE',
'orderby' => 'meta_value_num',
'meta_key' => 'YOUR_METAFIELD_SLUG'
);
$customposts = new WP_Query($args);
while( $customposts->have_posts() ): $customposts->the_post();
// loop goes here
如果您需要更复杂的东西,您可以通过查询一次然后使用条件来检查元值来避免重复查询。例如,使用上面示例中的查询...
// Position 1 on your page
<div class="position-1">
<?php
while( $customposts->have_posts() ): $customposts->the_post();
$meta_value = get_post_meta(get_the_ID(), 'YOUR_METAFIELD_SLUG', true);
// Only print something here if the meta value is what we want
if( $meta_value == 1 ) :
the_title();
the_content();
endif;
// Reset the loop
$customposts->rewind_posts(); ?>
</div>
// Position 2 on your page
<div class="position-2">
<?php
while( $customposts->have_posts() ): $customposts->the_post();
$meta_value = get_post_meta(get_the_ID(), 'YOUR_METAFIELD_SLUG', true);
if( $meta_value == 2 ) :
the_title();
the_content();
endif;
// Reset the loop again
$customposts->rewind_posts(); ?>
....等等。
您可能会发现这些有用: