我有一个名为business
的自定义帖子类型,每个帖子都有一个带元键country
的元数据集。
我想按元值订购帖子,并且每个元值只显示3个帖子:
纽约:
法国
PS:每个元值都是从其他帖子类型places
我的代码:
$n = 0;
$args = array(
'post_type'=>'business'
);
$query_biz = get_posts($args);
foreach ($query_biz as $biz) {
$theme_meta = get_post_meta($biz->ID,'country',true);
if($theme_meta == 'France'){
if($n < 3):
echo $biz->post_title.'<br/>';
endif;
} ...
$n++;
}
在全球范围内,我想通过元值将帖子分开:
纽约:&lt; ===元值 | -post title具有元值纽约 | - 另一个帖子标题有元值纽约 | - 另一个帖子标题有元值纽约
法国&lt; ===元值 | -post title有元值法国 | - 另一个帖子标题有元值法国 | - 另一个帖子标题有元值法国
并且仅限制每个元值的结果为3
答案 0 :(得分:0)
怎么样:
if($n == 0)
echo $biz->post_title.'<br/>';
else
echo '<p>' . $biz->post_title . '</p>;
答案 1 :(得分:0)
这样的事情怎么样:
<?php
// New Vars
$posts = array();
$post_limit = 3;
$args = array(
'post_type'=>'business'
);
$query_biz = get_posts($args);
foreach ($query_biz as $biz) {
// Get post country
$theme_meta = get_post_meta($biz->ID,'country',true);
// Check if county key exits in array
if (!array_key_exists($theme_meta, $posts)) $posts[$theme_meta] = array();
// If more than post_limit don't add
if ($post_limit <= count($posts[$theme_meta])) continue;
// Else add post to array
else array_push($posts[$theme_meta], $biz);
}
// Print Titles
foreach ($posts as $country => $_posts) {
echo '<h2>Country: ' . $country . '</h2>';
foreach ($_posts as $post) {
echo '<p>' . $post->post_title . '</p>';
}
}