В моем настраиваемом типе сообщений ("mitarbeiter") есть настраиваемое поле под названием "сортировка", которое позволяет только номерам в качестве значения. В настоящее время мои должности упорядочиваются по названию. Я хотел бы заказать их по значению настраиваемого поля "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();
}
Как я могу это сделать?
Как отметил Питер в комментарии, query_posts()
не самая лучшая функция для использования - см. Этот пост в WordPress Stack Exchange для получения некоторой информации об этом. В принципе, он неэффективен и вызывает некоторые неясные ошибки.
Лучший способ сделать это - использовать 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
мета-ключа sort
для вас, а также убедитесь, что ваша страница работает немного быстрее.
использовал meta_key
в query_posts
и 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
) );
query_posts
. Кроме того, посмотрите документациюWP_Query
иWP_Query
небольшое исследование, там так много информации по этой теме.