Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I have a table in my database containing vote a tally I'm trying to order posts by.

screenshot: the table

I've tried something like this, which brings up all the voted posts and pagination okay but does not order them by DESC. Any advice if I'm approaching this right is appreciated.

   <?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; ?>
share|improve this question
add comment

2 Answers

up vote 0 down vote accepted

The Problem

$my_posts doesn't contain any posts. It contains post IDs and likes. And you're dropping both into post__in, which can't work. I guess even the number of posts wouldn't work if the plugin(?) wouldn't add any post with a 0-x integer to the db-table per default.

The Debug

Try the following:

$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>';

which will likely show you an array containing two sub-arrays.

Way to a solution

Then try to get the sub-array you need and drop it into your query. Example: 'post__in' => $my_likes['like_pid'].

The Plugin

Anyway, a plugin should store something like this in the post_meta table in a field and not add an unnecassary table for something like that. There should be a facebook plugin by otto in the wp.org repo. This one's much stronger, better written & by a trustable author. You should consider switching.

share|improve this answer
    
I'm only a learner so still working on your solution... it is a custom plugin with a few features unseen in others, so I'll have to have it worked on. The array I got back was ( [0] => 6 [1] => 37 [2] => 9 [3] => 33 [4] => 36 [5] => 32 [6] => 70 [7] => 8 [8] => 27 [9] => 69 [10] => 53 [11] => 7 [12] => 72 ) I tried to use your example code without luck, I thought maybe $my_likes['like_count'] but no. –  DOA Jun 9 '11 at 14:34
    
It should be fine. You're getting back an array containing all the post IDs as values and 'post__in' does implode the array. Could you update your Q with the exact current code? –  kaiser Jun 9 '11 at 14:46
    
@kaiser I've updated the first to what I'm trying. –  DOA Jun 9 '11 at 14:53
    
and yes the array from your debug code was showing the Post ID in the correct order by amount of votes. –  DOA Jun 9 '11 at 14:55
    
Could it be that you have another loop before it (it's not your main loop)? –  kaiser Jun 9 '11 at 14:57
show 4 more comments

User the parameter 'order' in your loop call.

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

There is also a order_by parameter

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

share|improve this answer
    
..No luck there, it seems to be ordering by post date no matter what I try. –  DOA Jun 9 '11 at 14:13
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.