web-dev-qa-db-ja.com

get_pagesはメタ値でアルファベット順にソートする

私は不動産ウェブサイトを運営しており、販売している家のリストを持っています。私は家に関する情報を保存するためにたくさんのカスタムフィールドを使っています。あなたが家のリストページ(ページではなく、投稿)で家をクリックすると、それはその家のための専用のページ(再び、投稿ではない)に連れて行きます。私はPHPとWordpressにとても不慣れです。

今私が使っているコード(get_pages)は、それが欲しいすべてのページを表示するために働いています、しかしそれはpost_dateによってソートしています。代わりに、私のやりたいことは、私のカスタムフィールドメタ値の1つによってアルファベット順にソートすることです。具体的には、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
    }
?>

私の汚いコードをすみません、私は完全なnoobです、そしてこれで完全に私自身の上にいます、そして、専門的な訓練をしません。

そのため、基本的に、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などから呼び出されたある種のカスタムクエリを使用する必要があるのか​​私にさえわかりません。私はこれを達成するために私がする必要があるものは何でも開いています。ご協力ありがとうございました!

2
redsun

Get_pages関数はかなり古く、実際にはもう使うべきではありません。代わりにget_postsを使用してください(Pageは単なるPostの特殊なタイプです)。

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