在我的自定义帖子类型(“mitarbeiter”)中,有一个名为“sort”的自定义字段,它只允许数字作为值。目前,我的帖子按标题排序。我想通过自定义字段“sort”的值来命令它们,它将由函数get_field("sort")
给出。
这是我的代码现在的样子:
// Get the team members
function get_employee() {
query_posts(array(
'post_type' => 'mitarbeiter',
'showposts' => 100,
'orderby' => 'title',
'order' => 'ASC'
) );
while (have_posts()) : the_post();
$content = '
<div class="col-md-6 department member_of_'. get_field("abteilung") .'">
<div class="well">
<div class="row">
<div class="col-xs-5">';
// Display the image
$image = get_field('portraitfoto');
if (!empty($image)) :
$content .= '<img class="img-responsive sidebar-img team-member" src="'. $image["url"] .'" alt="'. $image["alt"] .'" /><br />';
endif;
$content .= '</div>
<!-- /.col-xs-5 -->
<div class="col-xs-7">
<h2>'. get_the_title() .'</h2>
<p>'. get_field("funktion") .'<br>'.
get_field("telefon") . '<br>
<a href="mailto:'. get_field("email") . '">'. get_field("email") .'</a></p>
</div><!-- /.col-xs-7 -->
</div><!-- /.row -->
</div><!-- /.well -->
</div><!-- /.col-md-6 -->';
echo $content;
endwhile;
wp_reset_query();
}
我该怎么做?
答案 0 :(得分:1)
在meta_key
和query_posts
orderby = 'meta_value_num'
query_posts(array(
'post_type' => 'mitarbeiter',
'showposts' => 100,
'meta_key' => 'sort',
'orderby' => 'meta_value_num',
'order' => 'ASC/DESC'// Add ASC OR DESC as per your requirement
) );
答案 1 :(得分:1)
正如Pieter在评论中提到的那样,query_posts()
并不是最好的功能 - 请参阅WordPress Stack Exchange上的this post了解相关问题。基本上,它效率低下并导致一些模糊的错误。
更好的方法是使用WP_Query,该文档将向您展示如何执行此操作以及更多(这是一个非常强大的类)。
要重写您的查询,并添加您的排序条件,您将看到类似这样的内容:
$my_query = new WP_Query(array(
'post_type' => 'mitarbeiter',
'posts_per_page' => 100,
'meta_key' => 'sort',
'orderby' => 'meta_value_num',
'order' => 'ASC',
) );
要使循环与自定义WP_Query一起使用,您还需要更改此行:
while (have_posts()) : the_post();
到此:
while ($my_query->have_posts()) : $my_query->the_post();
并将代码末尾的wp_reset_query();
电话更改为wp_reset_postdata();
您应该通过sort
元键找到这种排序,并确保您的页面运行得更快。