4

ワードプレスを使用しています。データベースからデータを取得する次のクエリがあり、完全に機能しています

$args1 = array(
 'post_type' => 'gallery',
 'posts_per_page' => $gnum,
 'post__in' => array(400, 403),
 'paged' => $paged,
 'orderby' => 'title',
 'order' => 'ASC'                    

);

query_posts($args1);

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

//And then some other code to display data

上記のクエリを使用'post__in' => array(400, 403),して、 ID='400' AND '403' の行をフェッチしています。そのため、エコーすると、2 つの情報しか表示されません。

今、私が達成しようとしているのは、テーブルからすべてのデータをフェッチすることですが、情報を表示するときに、ID が最初に 400、次に 403、次に'orderby' => 'title',AND 'order' に基づいて残りの行を取得したい => 「ASC」

質問を手伝っていただけますか?

ありがとう

編集

$args2 = array(
 'post_type' => 'gallery',
 'posts_per_page' => $gnum,
 'post__not_in' => array(400, 403),
 'paged' => $paged,
 'orderby' => 'title',
 'order' => 'ASC'                    

);

query_posts($args2);
4

3 に答える 3

0

あなたがやっているように、Wordpress クエリ構造を使用してそれを行うことはできません。考えられる解決策の 1 つは、(400, 403) 以外の結果を探す 2 番目のクエリを実行し、この結果の配列を最初の配列の最後に追加することです。

これを行うには、メインループを変更しないように、get_posts()代わりに使用する必要があります。query_posts()

$array = get_posts($args1);
$array = array_merge($array, get_posts($args2);
于 2013-04-01T17:32:46.487 に答える
0

次のことを試してみるとよいと思います。

$args = array(
 'post_type' => 'gallery',
 'posts_per_page' => $gnum,
 'paged' => $paged,
 'orderby' => 'ID = 400 DESC, ID = 403 DESC, title',
 'order' => 'ASC'                    
);

query_posts($args);
...

これがどうなるか教えてください。

于 2013-04-01T17:50:25.007 に答える