сортировка страниц в алфавитном порядке по мета-значению
Я управляю сайтом недвижимости, и у меня есть список домов, которые мы продаем. Я использую кучу настраиваемых полей для хранения информации о домах. Когда вы нажимаете на дом на странице домашнего объявления (страница, а не публикация), вы переходите на специальную страницу (опять же, не публикацию) для этого дома. Я очень новичок в 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> <?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 или что-то в этом роде. Я открыт для всего, что мне нужно сделать, чтобы достичь этого. Спасибо вам за вашу помощь!
1 answers
Функция get_pages довольно старая и действительно больше не должна использоваться. Вместо этого используйте get_posts (страница - это просто особый тип записи):
$listingPages = get_posts(
array(
'meta_key' => 'streetAdd',
'post_type' => 'page',
'post_status' => 'publish',
'orderby' => 'meta_value',
'order' => 'ASC',
)
);