当前位置:首页>网站建设>WordPress使用SQL语句自定义查询文章时排除分类的写法

WordPress使用SQL语句自定义查询文章时排除分类的写法

释放双眼,带上耳机,听听看~!

如题,我们在使用wordpress进行相关定制开发时,可能会遇到程序内置的查询无法满足我们实际数据查询需求,所以就需要我们通过定制mysql语句来进行相关的查询。

wordpress使用sql查询的方法:

1、先定义全局类:

global $wpdb;

2、通过$wpdb类来查询相关的数据;

$wpdb提供了多种查询方法: 如:get_results 直接返回查询结果,get_rows返回多行,get_var返回单个值等。

我们这里不过多的描述基础,直接上代码:

下面是一段查询一段时间内热门文章的代码,是根据文章评论数量来判断是否热门:

function most_comm_posts($days=30, $nums=5) {
    global $wpdb;
    date_default_timezone_set("PRC");
    $today = date("Y-m-d H:i:s");
    $daysago = date( "Y-m-d H:i:s", strtotime($today) - ($days * 24 * 60 * 60 * 10) );
    $result = $wpdb->get_results("SELECT comment_count, ID, post_title, post_date FROM $wpdb->posts WHERE post_date BETWEEN '$daysago' AND '$today' and post_type='post' and post_status='publish' ORDER BY comment_count DESC LIMIT 0 , $nums");
    $output = '';
    if(empty($result)) {
        $output = '<li>暂时没有数据</li>';
    } else {
        foreach ($result as $topten) {
            $postid = $topten->ID;
            $title = $topten->post_title;
            $commentcount = $topten->comment_count;
            if ($commentcount >= 0) {
                $output .= '<a class="list-group-item visible-lg" title="'. $title .'" href="'.get_permalink($postid).'" rel="bookmark"><i class="fa  fa-book"></i> ';
                    $output .= strip_tags($title);
                $output .= '</a>';
                $output .= '<a class="list-group-item visible-md" title="'. $title .'" href="'.get_permalink($postid).'" rel="bookmark"><i class="fa  fa-book"></i> ';
                    $output .= strip_tags($title);
                $output .= '</a>';
            }
        }
    }
    echo $output;
}

以上代码是获取到了一段时间内所有分类的热门文章,我们现在的需求是热门文章排除分类ID 为29的文章;通过系统查询很容易实现,不过在sql语句内如何实现呢,直接上代码:

欢迎访问秀主题博客,分享简单实用WP教程
$result = $wpdb->get_results("SELECT comment_count, ID, post_title, post_date FROM $wpdb->posts WHERE post_date BETWEEN '$daysago' AND '$today' and post_type='post' and post_status='publish' and ($wpdb->posts.ID NOT IN (SELECT object_id FROM $wpdb->term_relationships	WHERE term_taxonomy_id IN (29) ) ) ORDER BY comment_count DESC LIMIT 0 , $nums");

原理,我们这里使用了关联查询,wp_term_relationship表记录了文章ID和分类ID对应关系,所以,我们在where语句后面跟上了 not in 方法,来排除分类为29的文章。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
网站建设

wordpress统计显示全站总访问量/今日总访问量/当前是第几个访客

2023-2-15 9:21:16

网站建设

【小白文】提升WordPress网站的安全性的5个技巧

2023-2-19 9:37:24

温馨提示:

1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:971318156@qq.com,我们将第一时间处理!

2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。

3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索