Сортировка по произвольным полям в WordPress

С

Столкнулся с необходимостью отсортировать записи в одной из категорий по произвольным (еще их называют «дополнительные») полям. Считал, что задача тривиальная, однако все решения, которые сообщество могло предложить отличаются либо сложной реализацией, либо просит установки плагина, либо работа идет непосредственно с БД. Все три варианта не понравились, сделал по другому. На мой взгляд сильно проще и понятнее. Правда, если у вас стоит задача сортировать записи в категории с постраничным просмотром, этот вариант нужно будет модернизировать. Я думаю, проблем у вас с этим не будет.

Вот пример, который нам показывает сам Codex:

$querystr = "
    SELECT wposts.* 
    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
    WHERE wposts.ID = wpostmeta.post_id 
    AND wpostmeta.meta_key = 'custom-key' 
    AND wposts.post_type = 'page' 
    ORDER BY wpostmeta.meta_value DESC
    ";

Решение с крокодилами или плагинами вы сами сможете найти в любом поисковике.

Вот как сделал я:

<?php 

$SortArray = array();

if ( have_posts() ) : while ( have_posts() ) : the_post(); 

    $Sort = '';
    $Sort = get_post_meta(get_the_ID(), 'Sort', true); 

    $SortArray[$Sort]['permalink'] = get_permalink($post->ID);
    $SortArray[$Sort]['excerpt'] = get_the_excerpt();
                    
endwhile;

$SortCount = count($SortArray);

for ($i = 1; $i <= $SortCount; $i++) { ?>
<a href="<?php echo $SortArray[$i]['permalink']; ?>">
    <?php echo $SortArray[$i]['excerpt']; ?>
</a>            
<?php } ?>  

Если вам понравилось — используйте на здоровье.

Дмитрий Волотко

Метки

Страницы