4

以下のコードは、基本的に 4 つのリンクを作成して、フロント エンドで投稿を並べ替えることができるようにします。

        <div class="sort">
            Sort projects by:
            <a href="http://mydomain.com/find-work/" >Latest Projects</a>
            <a href="http://mydomain.com/find-work/?order=asc&orderby=date" >Ending Soon</a>
            <a href="http://mydomain.com/find-work/?order=asc&orderby=meta_value_num&meta_key=proj_budget" >Budget Low</a>
            <a href="http://mydomain.com/find-work/?order=desc&orderby=meta_value_num&meta_key=proj_budget" >Budget High</a>
        </div>

        <?php   $my_query = new WP_Query( array( 
                        'post_type' => 'project',
                        'orderby' => get_query_var('orderby'),
                        'order' => get_query_var('order'),
                        ));      
                while ( $my_query->have_posts() ) : $my_query->the_post(); ?>

2 番目のリンクである日付順は正常に機能しますが、メタ値で並べ替える 2 つのリンクは機能しません。私のクエリには明らかに何かが欠けていますが、私の人生ではそれを解決することはできません。

何か案は??

4

2 に答える 2

8

それは非常に簡単です:

new WP_Query( array( 
              //I used meta_value_num below, because it's about a numeric field
              //if you don't have a numeric field, just use meta_value
              "orderby" => 'meta_value_num',
              "meta_key" => 'price',
              "order" => 'DESC'
              ));
于 2012-11-21T22:49:25.987 に答える
8

メタ値を使用すると、少し魔法のようになります。

$my_query = new WP_Query( array( 
                    // 'post_type' => 'project',
                    'meta_key' => 'proj_budget',
                    'orderby' => 'meta_value_num'
                    ));      

可能な値はすべて codex で説明されています: http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters

于 2012-06-19T13:10:48.253 に答える