Как отсортировать по настраиваемому полю?

0

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

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

  • 1
    НИКОГДА НЕ query_posts . Кроме того, посмотрите документацию WP_Query и WP_Query небольшое исследование, там так много информации по этой теме.
Теги:
sorting
advanced-custom-fields

2 ответа

1
Лучший ответ

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

  • 1
    Большое спасибо, я многому научился из вашего поста!
  • 0
    С удовольствием! Очень рад, что это помогло =]
1

использовал 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 
) );
  • 0
    Спасибо, приятно знать об этом!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню