按自定义字段属性排序

时间:2013-11-25 作者:ultraloveninja

我正在尝试按员工姓名的字母顺序排列此职位类型的输出,但我似乎不知道是否需要在开头array() 或者如果我在foreach()

这是我构建的循环:

 <?php
 $mypost = array(\'post_type\' => \'staff\', \'posts_per_page\' => 20, \'orderby\' => \'staff-name\',
    \'order\' => \'ASC\' );
 $loop = new WP_Query( $mypost );

 ?>
<ul>

<?php while ( $loop->have_posts() ) : $loop->the_post();?>

 <?php $items = get_post_meta( $post->ID, \'elements\', true ); 
 foreach( $items as $i){

echo\'<li>
    <a href=" \'. get_permalink() .\' ">\' . $i[\'staff-name\'] . \'</a>
    </li>
    \';
}
?>  

<?php endwhile; wp_reset_query(); ?>
Thestaff-name 字段保留工作人员的名字和姓氏,但由于某些原因,它看起来并没有按字母顺序正确排序。

我注意到如果我把它从ASCDESC 它确实改变了输出的顺序,但没有按字母顺序排列。这就像是忽略了场staff-name 而是通过post ID订购。

2 个回复
最合适的回答,由SO网友:Nicolai Grossherr 整理而成

您必须添加:

\'meta_key\' => \'key_name\'
参数数组,以便将键与orderby 参数此外,您必须具有orderby 参数如下:

\'orderby\' => \'meta_value\'
But 如果像代码所建议的那样,将要排序的数据保存到数组中,则会出现问题。你将无法使用它进行排序,看看这个问题的答案WP_Query meta_query by array key 以获取解释。

SO网友:s_ha_dum

如果您的meta\\u键是“staff name”,则不需要\'orderby\' => \'staff-name\', 你想要的\'orderby=>\'meta_value\'

$mypost = array(
  \'post_type\' => \'staff\', 
  \'posts_per_page\' => 20, 
  \'meta_key\' => \'staff-name\', 
  \'orderby\' => \'meta_value\', 
  \'order\' => \'ASC\' 
);
这是重复问题的本质,在the Codex as well.

结束

相关推荐

如何维护对Comment-template.php的更改

我对文件进行了一些自定义更改wp-includes\\comment-template.php. 这些更改会定期丢失,我认为这与WordPress的更新有关,并且文件会被修改/重写。我已更改:$comments_link = get_permalink( $post_id ) . \'#comments\'; 收件人:$comments_link = get_permalink( $post_id ) . \'#disqus_thread\'; 有没有办法保持这些更改,使它们不会丢失?