あなたが知っている、WP3.0の時点でカスタム高度なクエリのためのオプションがあります、それは素晴らしいです。現時点で、meta_key、meta_valueなどのカスタムフィールドのクエリパラメータは、新しいmeta_queryパラメータでは推奨されません( こちらを参照 )
私は新しいシンタックスを使ったかなり単純な問い合わせ、特定のmeta_key(order_in_archive)を含む特定のpost_type(services)による投稿の問い合わせをすることを試みます - これは予想通りうまくいきます。しかし - 私はmeta_valueでクエリを並べ替えたいのですが、成功しませんでした。
これは私の質問です -
query_posts(
array( 'post_type' => 'services',
'order' => 'ASC',
'orderby' => 'meta_value',
'meta_query' => array(
array('key' => 'order_in_archive'))
)
);
私はmeta_value_numericとmeta_valueによってもorderbyを試しましたが、いずれにせよ結果は公開日順に並べられています(通常の投稿がするように)。誰がこれをどのようにして行うことができるか知っていますか?
ありがとう
古いメソッドを使って orderby パラメータのメタキーを定義できます(私はWP 3.1.1でテストしました)...
query_posts(
array( 'post_type' => 'services',
'order' => 'ASC',
'meta_key' => 'some_key',
'orderby' => 'meta_value', //or 'meta_value_num'
'meta_query' => array(
array('key' => 'order_in_archive',
'value' => 'some_value'
)
)
)
);
この問題は一般的にWordPress 4.2で解決されています 名前付きクエリを使うことで - / - 。例えば.
$args = array(
'post_type' => 'services',
'orderby' => 'order_clause',
'meta_query' => array(
'order_clause' => array(
'key' => 'order_in_archive',
'value' => 'some_value',
'type' => 'NUMERIC' // unless the field is not a number
)));
私にとっては、数値フィールドで並び替えたいと思い、メタクエリの中で'type' => 'NUMERIC'
を使わなければなりませんでした。
それは簡単です:
これが私のコードです:
query_posts(array(
'post_type' => 'directors',
'posts_per_page' => -1,
'order' => 'ASC',
'orderby' => 'director_weight',
'meta_key' => 'director_weight'
) );
主な詳細は以下のとおりです。meta_key
を含めます。meta_key
が含まれていない限り、私のコードは順序付けされませんでした。それがすべてです。
これはdirector_weight
によるdirectors
の写真順序のリストの完全なコードです:
<?php
query_posts(array(
'post_type' => 'directors',
'posts_per_page' => -1,
'order' => 'ASC',
'orderby' => 'director_weight',
'meta_key' => 'director_weight'
) );
while (have_posts()) : the_post();
?>
<li <?php echo get_field('director_weight') ?>>
<img src="<?php echo get_field('director_imagen') ?>">
</li>
<?php
endwhile;
wp_reset_query();
?>
$meta_query = new WP_Meta_Query( $meta_query_args );
$meta_query_args = array(
'post_type' => 'services',
'order' => 'ASC',
'meta_key' => 'your_key',
'orderby' => 'meta_value', //or 'meta_value_num'
'meta_query' => array(
array('key' => 'order_in_archive',
'value' => 'some_value'
)));
降順で並べ替えるために必要なカスタムイベントの日付がありました。カスタムイベントの日付はwp_postmetaテーブルに格納されており、通常post_dateや変更日とは異なるため、これは私にとって役に立ちました。
$args = array(
'post_type' => 'events', // my post type - yours can be 'posts'
'post_status' => 'publish', // only get posts with this status
'orderby' => 'meta_value', // orderby the meta_value of the following meta_key
'meta_key' => 'my_custom_eventdate', // the custom meta_key name
'order'=> 'DESC' // sort descending
);
$posts = new WP_Query($args);
そうすると、$投稿をループすることができます。
foreach($posts->posts as $p){
$post_id = $p->ID;
// and so on ...
// # example of how I retrieve my event date
$event = get_post_meta($post_id, 'my_custom_eventdate', true);
}
この仕事は私のために
$args = array(
'post_type' => 'services',
'order' => 'ASC',
'orderby' => 'order_clause',
'meta_query' => array(
'order_clause' => array(
'key' => 'order_in_archive'
)));
Order_clauseのキーを提供するためだけに必要
私はこれが非常にうまくいくことがわかりました。
<?php
query_posts(
array( 'posts_per_page' => '-1',
'post_type' => 'services',
'order' => 'DESC',
'meta_key' => '_order',
'orderby' => 'meta_value_num', //or 'meta_value_num'
)
);