WordPress通过filters更改query_posts()产生的SQL语句
WordPress通过filters更改query_posts()产生的SQL语句
喵先生丿 发表于9个月前
WordPress通过filters更改query_posts()产生的SQL语句
  • 发表于 9个月前
  • 阅读 98
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 学生专属云服务套餐 10元起购>>>   

通过query_posts()filters更改其产生的SQL语句,可以做想针对复杂的查询,如与其他数据库表进行联合查询,更改select选择的字段等等.并且可以享用query_posts()带来的好处,例如分页.

//可用的filters有

posts_join
posts_groupby
posts_orderby
posts_distinct
posts_fields
post_limits
posts_where_paged
posts_join_paged
posts_request

例如增加where查询语句


function posts_where_field ($fields){
    global $wp_query ;
   
    if(!empty($_GET['are'])){
        $fields .= " AND  wp_posts.post_exhibition_are = ".$_GET['are'];
    }

    if(!empty($_GET['city'])){
        $fields .= " AND wp_posts.post_exhibition_city = ".$_GET['city'];
    }
    return $fields;
}

add_filter('posts_where_paged','posts_where_field');

例如增加order查询语句


function posts_orderby_field($fields){
    global $wp_query ;
    if(!empty($_GET['fa'])){
        switch($_GET['fa']){
            case 1:
                $fields = " wp_posts.post_fa_begintime ASC ";
                break;
            case 2:
                $fields = " wp_posts.post_fa_begintime DESC ";
                break;
            case 3:
                $fields = " wp_posts.post_date DESC";
                break;
            case 4:
                $fields = " wp_posts.post_date ASC";
                break;
        }
    }
    return $fields;
}

add_filter('posts_where_paged','posts_where_field');
标签: WordPress PHP
共有 人打赏支持
粉丝 4
博文 14
码字总数 5275
×
喵先生丿
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: