如何根据记分点对自定义帖子类型进行排名

时间:2014-09-30 作者:Foxsk8

我将自定义字段用于iscasino_rank_score以存储评分为例4.9

所有赌场都存储在自定义柱式赌场上。

我需要弄清楚如何获得排名列表,如RANKED #2 of 350 CASINOS 从…起points.

Wordpress将此数据存储到wp_postmeta 桌子

我可以从自定义帖子类型、所有赌场获得所有分数并将其放入数组,但接下来我需要使用自定义php进行排名排序。

我读过this 但有不同的结构和数据。

1 个回复
最合适的回答,由SO网友:Robert hue 整理而成

您可以运行WP_Query 从post\\u type获取所有帖子casinos 并使用自定义字段值对其进行排序casino_rank_score. 然后可以进一步处理它以显示列组。

$args = array(
    \'post_type\' => \'casinos\',
    \'meta_key\' => \'casino_rank_score\',
    \'orderby\' => \'meta_value_num\',
    \'posts_per_page\' => 350,
    \'ignore_sticky_posts\' => 1,
);

$my_query = new WP_Query( $args );
如果只需要显示一篇文章RANKED #2 of 350 CASINOS 然后您可以使用\'posts_per_page\' => 1, 并偏移1\'offset\' => 1,这一天你将得到排名第二的赌场。

EDIT

要获得排名,您需要运行自定义查询。这就是如何在自定义查询中获取当前帖子的排名。它经过优化,因为我们只返回ID,不需要post数据,所以速度非常快。但为了进一步优化它,您可以使用Transients_API 几小时或几天。

$args = array(
    \'post_type\' => \'casinos\',
    \'meta_key\' => \'casino_rank_score\',
    \'orderby\' => \'meta_value_num\',
    \'posts_per_page\' => -1,
    \'ignore_sticky_posts\' => 1,
    \'fields\' => \'ids\',
);

$my_query = new WP_Query( $args );

global $post;

$total_casinos = $my_query->post_count;
$casinos_rank = array_search( $post->ID, $my_query->posts ) + 1;

echo "RANKED #" . $casinos_rank . " of " . $total_casinos . " CASINOS";
这是testedworking

结束

相关推荐

custom sortable column

我正在尝试在我的时间线自定义帖子中为年份创建一个额外的列。我可以创建额外的列,实际上我可以对它进行排序,它工作正常,但我的所有页面似乎都不工作。这是我用来创建列并使其可排序的所有代码:// Register the column add_filter( \'manage_edit-maryg_timeline_columns\', \'set_custom_edit_date_columns\' ); add_action( \'manage_maryg_timeline_posts_cu