сортировка страниц в алфавитном порядке по мета-значению


Я управляю сайтом недвижимости, и у меня есть список домов, которые мы продаем. Я использую кучу настраиваемых полей для хранения информации о домах. Когда вы нажимаете на дом на странице домашнего объявления (страница, а не публикация), вы переходите на специальную страницу (опять же, не публикацию) для этого дома. Я очень новичок в PHP и Wordpress.

Прямо сейчас код, который я использую (get_pages), работает для отображения всех страниц, которые я хочу, но он сортируется по post_date. Вместо, то, что я хочу, чтобы это делалось, - это сортировка в алфавитном порядке по одному из моих пользовательских мета-значений полей; в частности, для сортировки A-Z по адресу улицы. Могу ли я каким-либо образом использовать параметр "sort_column" для этого? Все, что я нашел в результате поиска, было связано с получением сообщений вместо страниц.

Вот мой текущий код, который получает страницы:

<?php $listingPages = get_pages( 
        array(
            'sort_order' => 'ASC',
            'sort_column' => 'post_date',
            'meta_key' => 'houseNo',
            'post_type' => 'page',
            'post_status' => 'publish'
        )
    );

    foreach( $listingPages as $page ) {     
        $content = $page->post_content;
        if ( ! $content ) // Check for empty page
            continue;

        $content = apply_filters( 'the_content', $content );
    ?>
        <div class="listingPreview">
            <h2 class="listingTitle"><a href="<?php echo get_page_link( $page->ID ); ?>"><span class="houseNo"><?php echo get_post_meta($page->ID, 'houseNo', true); ?></span>&nbsp;<?php echo get_post_meta($page->ID, 'streetAdd', true); ?></a></h2>
        </div>
    <?php
    }
?>

Пожалуйста, извините мой грязный код, я полный нуб, и я полностью сам по себе с этим, и у меня нет профессионального обучение.

В общем, мне интересно, могу ли я сделать что-то подобное с параметром sort_column (это, очевидно, не работает):

<?php $listingPages = get_pages( 
        array(
            'sort_order' => 'ASC',
            'sort_column' => get_post_meta('streetAdd'),
            'meta_key' => 'houseNo',
            'post_type' => 'page',
            'post_status' => 'publish'
        )
    );

Я даже не знаю, правильно ли я задаю вопрос, или мне нужно использовать какой-то пользовательский запрос, вызванный из functions.php или что-то в этом роде. Я открыт для всего, что мне нужно сделать, чтобы достичь этого. Спасибо вам за вашу помощь!

Author: redsun, 2012-09-07

1 answers

Функция get_pages довольно старая и действительно больше не должна использоваться. Вместо этого используйте get_posts (страница - это просто особый тип записи):

$listingPages = get_posts( 
    array(
        'meta_key' => 'streetAdd',
        'post_type' => 'page',
        'post_status' => 'publish',
        'orderby' => 'meta_value',
        'order' => 'ASC',
    )
);
 4
Author: Otto, 2012-09-07 19:42:19