按元值订购

时间:2014-04-23 08:32:29

标签: php wordpress meta-key

我有一个名为business的自定义帖子类型,每个帖子都有一个带元键country的元数据集。

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

纽约:

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

法国

  • 帖子标题有元值法国
  • 另一个帖子标题有元值法国
  • 另一个帖子标题有元值法国

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

2 个答案:

答案 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>';
    }
}