Wordpress orderby自定义字段值

时间:2014-01-13 19:40:51

标签: php wordpress

我正在使用此代码对交互式Bing Map可用的菜单选项进行排序。提供的代码是为每个类别中的菜单创建列表元素的内容。我遇到的问题是,它不是通过标记号(mrk_num)对它们进行排序,标记号是在Wordpress的后端声明的自定义字段。我不知道这是否足以帮助定义我的问题,所以如果您需要更多信息,我会尽力提供。

使用提供的代码,结果会显示但不符合它们的顺序。

function navItems($navSet){
    $args = array( 'post_type' => 'territory_map',
                   'posts_per_page' => -1,
                   'meta_value' => $navSet,
                   'orderby'=>'mrk_num',
                   'order'=>'ASC'
    );

    $loop = new WP_Query($args);

    while ( $loop->have_posts() ) : $loop->the_post();

    $mrkNum = get_custom_field('mrk_num');

    echo '<li><a onclick="activateInfoBox('.get_the_id().', $(this))" href="#">' . $mrkNum . ' ' .get_the_title() . '</a></li>';

    endwhile;
}

$ navSet是我从HTML中调用它时传递给它的类别的名称。例如,我将通过它'室内景点'

结果显示但不是基于字段mrk_num的升序。我对此很新,所以我将尝试提供您可能需要的更多信息。

1 个答案:

答案 0 :(得分:0)

通常,这应该有效。

$args = array( 
    'post_type' => 'territory_map',
    'posts_per_page' => -1,
    'meta_key' => 'mrk_num',
    'orderby'=>'meta_value_num',
    'order'=>'ASC',
    'meta_query' => array(
        array(
            'key' => 'your_key',
            'value' => $navSet,
            'compare' => '='
        )
    )
);

如果它不起作用,我已经体验过你想要实现的目标,最好的方法是调试mysql查询(你可以使用这个plugin)并在{{3上添加一个过滤器}}