0

我有一个名为:的自定义帖子类型business,每个帖子都有一个带有 meta key 的元框country

我想按元值排序帖子,并且每个元值只显示 3 个帖子:

纽约:

  • 帖子标题具有元值纽约
  • 另一个帖子标题具有元值纽约
  • 另一个帖子标题具有元值纽约

法国

  • 帖子标题具有元值 France
  • 另一个帖子标题具有元值 France
  • 另一个帖子标题具有元值 France

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++;

}

在全球范围内,我想按元值分隔帖子,如下所示:

纽约:<=== 元值 |-帖子标题具有元值纽约 |-另一个帖子标题具有元值纽约 |-另一个帖子标题具有元值纽约

法国 <=== 元值 |-帖子标题具有元值法国 |-另一个帖子标题具有元值法国 |-另一个帖子标题具有元值法国

并且仅将每个元值的发布结果限制为 3

4

2 回答 2

0

怎么样:

if($n == 0)
  echo $biz->post_title.'<br/>';
else
  echo '<p>' . $biz->post_title . '</p>;
于 2014-04-23T08:43:07.440 回答
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>';
    }
}
于 2014-04-23T11:40:41.477 回答