2016-06-17 3 views
-1

В моем настраиваемом типе сообщений («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(); 
} 

Как я могу это сделать?

+1

** НИКОГДА НИКОГДА не используйте ** query_posts'. Также см. Документацию 'WP_Query', и сделайте небольшое исследование, есть так много информации по этому вопросу –

ответ

1

Как Pieter упоминался в комментариях, query_posts() не лучшие функции использовать - см this post на WordPress Stack обмен на фон по этому вопросу. В принципе, он неэффективен и вызывает некоторые неясные ошибки.

Лучший способ сделать это - использовать 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 для вас, а также убедитесь, что ваша страница работает немного быстрее.

+1

Большое спасибо, я многому научился с вашего поста! –

+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 
)); 
+0

Спасибо, хорошо знать об этом! –

Смежные вопросы