我正在根据分类法设置帖子的评级,可以说,现在我想根据评级和分类法查询它们。
PC 上的应用程序评级为 10。(meta_key= rating_pc)
Android 上的应用的评级为 5。(meta_key= rating_android)
add_action( 'posts_where', 'minscoreaction' );
function minscoreaction( $sql ){
global $wpdb;
$minscore = 9;//get_query_var( 'minscore' );
$platformslug = 'pc';//get_query_var( 'platformlist' );
if( $minscore ){
$sql .= $wpdb->prepare( " AND ( $wpdb->postmeta.meta_key LIKE %s AND $wpdb->postmeta.meta_value LIKE %s )", "rating_".$platformslug.'%',$minscore.'%');
问题:我什么也没得到...意味着没有帖子。实际上,有一篇帖子的 PC 评分为 9。
注意:由于多种原因,我只能使用此方法来查询Post。
另一个注意事项:
$where .= $wpdb->prepare( " AND $wpdb->posts.post_type LIKE %s ", 'reviews%' );
这将返回所有评论帖子类型
但这没有返回任何内容
$where .= $wpdb->prepare( " AND $wpdb->postmeta.meta_value LIKE %s ", '9%' );
前端
print_r(query_posts('post_type=reviews&platformlist=pc&minscore=9'));
最佳答案
在 functions.php
或您想要使用的模板页面
中使用它。
function filter_where( $where = '' ) {
global $wpdb;
$minscore = 9;
$platformslug = 'pc';
$posttype = "reviews";
$where .= " AND ($wpdb->posts.post_type = '".$posttype."')";
$where .= " AND (($wpdb->postmeta.meta_key LIKE '_overall_rating_".$platformslug."%' AND $wpdb->postmeta.meta_value = '".$minscore."')) ";
return $where;
}
add_filter('posts_where', 'filter_where');
或与WP_QUERY
在前端上使用此代码。
$the_query = new WP_Query(array(
'post_type' => $posttype ,
'meta_query' => array(
array('key' => '_overall_rating_' . $platformslug,
'value' => $minscore)
)
));
print_r($the_query);
关于php - 根据每个分类的多重评级获取帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30029302/