我使用此代码对交互式必应地图可用的菜单选项进行排序。 提供的代码是为每个类别中的菜单创建列表元素的代码。 我遇到的问题是,它不是按标记编号(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应有的顺序。 我对此相当陌生,所以我将尝试提供更多您可能需要的信息。
通常,这应该有效。
$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 查询(例如您可以使用此插件)并在posts_orderby上添加过滤器。