I have a page where people can rank stuff. My posts are ordered by the current ranking which is stored as a meta key in post meta.
Now i want to add the current ranking spot within the title of the single post page.
I found this code which is working fine with adding the ranking number according to post date:
class MY_Post_Numbers {
private $count = 0;
private $posts = array();
public function display_count() {
$this->init(); // prevent unnecessary queries
$id = get_the_ID();
echo sprintf( '<div class="post-counter">Post number<span class="num">%s</span><span class="slash">/</span><span class="total">%s</span></div>', $this->posts[$id], $this->count );
}
private function init() {
if ( $this->count )
return;
global $wpdb;
$posts = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_date " ); // can add or change order if you want
$this->count = count($posts);
foreach ( $posts as $key => $value ) {
$this->posts[$value] = $key + 1;
}
unset($posts);
}
}
$GLOBALS['my_post_numbers'] = new MY_Post_Numbers;
function my_post_number() {
$GLOBALS['my_post_numbers']->display_count();
}
Now i only need to make it work with my meta key value instead of order by post_date
$posts = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_date " );
Can someone help me changing this line so i can order by my ranking meta value?
The meta value is a decimal number like e.g. 3.745 .
Kinda lost right now already tried a lot with this but nothing worked yet