web-dev-qa-db-ja.com

ループクエリを注文するにはどうすればよいですか。

自分のデータベースに、投稿を注文しようとしている投票の投票を含むテーブルがあります。

スクリーンショット:

私はこのようなことを試してみました。それは投票された投稿とページネーションをすべて表示して大丈夫ですが、それらをDESCで並べ替えません。私がこの権利に近づいているならばどんなアドバイスでも評価されます。

   <?php
 global $wpdb;
$my_posts = $wpdb->get_col("SELECT like_pid FROM wp_likes_count ORDER BY like_count");
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
    'post__in' => $my_posts['like_pid'],
    'paged' => $paged,
    'posts_per_page' => 6,

    'order' => 'DESC'
    );
query_posts($args); ?>


               <?php while (have_posts()) : the_post(); ?>    
               <!-- do stuff -->
               <?php endwhile; ?>
1
DOA

問題

$my_postsには投稿がありません。投稿IDなどが含まれています。そしてあなたは両方をpost__inに落とし込んでいますが、これはうまくいきません。プラグイン(?)がデフォルトでdb-tableに0 x整数のポストを追加しなければ、ポストの数さえうまくいかないと思います。

デバッグ

以下を試してください。

$my_likes = $wpdb->get_col("SELECT like_pid FROM wp_likes_count ORDER BY like_count DESC");
echo '<pre>';
print_r( $my_likes );
echo '</pre>';

これはおそらくあなたに2つの部分配列を含む配列を示すでしょう。

解決への道

それから、必要な部分配列を取得し、それをクエリにドロップしてみてください。 例:'post__in' => $my_likes['like_pid']

プラグイン

とにかく、プラグインはフィールド内のpost_metaテーブルにこのようなものを格納し、そのようなものに不要なテーブルを追加しないでください。 wp.​​orgリポジトリにはottoのfacebookプラグインがあるはずです。これははるかに強く、よりよく書かれていて信頼できる作者によるものです。切り替えを検討する必要があります。

0
kaiser

ループ呼び出しでパラメータ 'order'を使用します。

$args = array(
    'post__in' => $my_posts,
    'paged' => $paged,
    'posts_per_page' => 6,
    'order' => 'DESC'
);

Order_byパラメータもあります

http://codex.wordpress.org/Function_Reference/query_posts

1
supajb