2015-01-20 99 views
0

我在一个网站上工作并构建一个自定义的帖子类型。在此自定义帖子类型中,我添加了一个元字段,您可以从1到16中选择一个数字。这些数字与我主页上的特定位置相对应。但现在我的问题出现了。我如何在这些特定职位中查询这些职位而不必重复自己。基于元值的wordpress查询

因此,例如...

这里与meta值1 这里与meta值2 这里meta值后后后3

等..

希望有人可以帮助我一点点

回答

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(); ?> 

....等等。

您可能会发现这些有用的:

http://codex.wordpress.org/Function_Reference/get_post_meta

http://codex.wordpress.org/Class_Reference/WP_Query

+0

感谢这个快速的解答。我一定会使用你的第二个例子,并使用标题和内容的模板部分来干一点干。再次感谢 – Toasty 2015-01-21 07:53:08

+0

后置类型应该是post_type。还是谢谢 – Toasty 2015-01-21 08:11:56