Get_Pages按元值的字母顺序排序

时间:2012-09-07 作者:redsun

我经营着一家房地产网站,我有一份我们正在出售的房屋清单。我正在使用一组自定义字段来存储有关房屋的信息。当您单击主页列表页面中的主页(第页,不是帖子)时,它会将您带到该主页的专用页面(同样,不是帖子)。我对PHP和Wordpress非常陌生。

现在,我使用的代码(get\\u pages)正在显示我想要的所有页面,但它是按post\\u日期排序的。相反,我希望它按照我的一个自定义字段元值的字母顺序进行排序;具体来说,按街道地址对A-Z进行排序。是否有任何方法可以使用“sort\\u 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\\u column参数执行类似操作(这显然不起作用):

<?php $listingPages = get_pages( 
        array(
            \'sort_order\' => \'ASC\',
            \'sort_column\' => get_post_meta(\'streetAdd\'),
            \'meta_key\' => \'houseNo\',
            \'post_type\' => \'page\',
            \'post_status\' => \'publish\'
        )
    );
我甚至不知道我问的问题是否正确,或者是否需要使用从函数调用的某种自定义查询。php之类的。为了实现这一目标,我愿意做任何事情。谢谢你的帮助!

1 个回复
最合适的回答,由SO网友:Otto 整理而成

get\\u pages函数已经很旧了,真的不应该再使用了。改为使用get\\u posts(页面只是一种特殊类型的帖子):

$listingPages = get_posts( 
    array(
        \'meta_key\' => \'streetAdd\',
        \'post_type\' => \'page\',
        \'post_status\' => \'publish\',
        \'orderby\' => \'meta_value\',
        \'order\' => \'ASC\',
    )
);

结束

相关推荐

Sorting tags by name

当标签有描述时,我会显示一系列标签。我想按名字而不是按邮寄数量来分类。有没有办法做到这一点?<?php $tags = get_tags(); if ($tags) { foreach ($tags as $tag) { if ($tag->description) { echo \'<dt><a href=\"\' . get_tag_link( $tag->te