如何根据帖子元数据的值(数量)对帖子进行排序?

时间:2011-09-22 作者:janoChen

我正在使用GD Star Rating plugin 以及bbPress plugin. 第一个插件确实有一个参数可以按投票数对帖子进行排序。但不幸的是,它与WP_Query (显然bbPress loop 使用它)。

这就是为什么我想创建自己的方法,在自定义循环中对自定义帖子类型进行排序。

假设我有一个函数或变量,输出每个帖子的投票数:

<?php votes_number(); ?> or $votes_number
我怎样才能在这样的事情中使用它们:

query_posts( "orderby=votes_number" );

query_posts( "my_custom_orderby=votes_number" );

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

要使用基于post的自定义字段进行排序,必须使用add_post_metaupdate_post_meta, 或者手动将其添加到post字段。

这样你就可以使用WP Query 查询该字段的元值并按值排序。例如

//adds a value to a field with the key name \'vote_field\' and your variable.
<?php add_post_meta($post_id, \'vote_field\', $votes_number); ?>

//query the key \'vote_field\' and order by
$query = new WP_Query( array ( 
                             \'post_type\' => \'post\', 
                             \'meta_key\' => \'vote_field\', 
                             \'orderby\' => \'meta_value\', 
                             \'order\' => \'ASC\' ) );
此外,还可以使用其他参数,例如meta_value_num 和\'meta_compare\'

结束

相关推荐

如何访问另一个PHP函数中的PHP变量

我想使用lax\\u google\\u map\\u init()中lax\\u google\\u map\\u maker()函数中的$atts变量。如何访问它?我试图“全球化”它,但由于某种原因,它没有起作用。function lax_google_map_init() { wp_enqueue_script(\'google-maps\', \'http://maps.googleapis.com/maps/api/js?sensor=false\'); wp_e