【问题标题】:Get posts from all categories except one category获取除一个类别之外的所有类别的帖子
【发布时间】:2014-07-24 10:43:19
【问题描述】:

搜索时,我想要所有类别的所有帖子,除了一个类别

这是我的搜索查询

SELECT * FROM wp_posts WHERE post_title like '%$search%' AND post_type = 'post' AND post_status = 'publish' ORDER BY post_date DESC

在这个查询中,我不想要 book 类别的帖子。当我搜索任何关键字时,需要显示除 book 类别帖子之外的所有帖子

有什么帮助吗?

【问题讨论】:

  • 我试过这段代码。它不工作。 SELECT * FROM wp_posts WHERE post_title like '%$search%' AND category != 'book' AND post_type = 'post' AND post_status = 'publish' ORDER BY post_date DESC
  • 对不起。我不知道,我在哪里获得类别名称。在 wp_posts 中有完整的帖子详细信息。你能帮帮我吗。
  • 我在表中找到了类别名称。 name 是我的类别名称。我试过 name != 'book'.not working
  • 我检查了表中的类别名称,与“名称”相同。 在 wp_terms 表中,类别名称列在此处。需要编写任何连接查询吗?
  • 你想要什么信息?我会告诉你的

标签: mysql


【解决方案1】:

试试下面:-

14 是类别 ID

 $request = $wpdb->prepare("SELECT * FROM $wpdb->posts 
  LEFT JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id)  
  LEFT JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)  

  WHERE ($wpdb->term_taxonomy.term_id <> 14  
     AND $wpdb->term_taxonomy.taxonomy = 'category'   
     AND $wpdb->posts.post_type = 'post'  
     AND $wpdb->posts.post_status = 'publish'
     AND post_title like '%$search%'
     AND post_date >= '" . date('Y-m-d').")");

【讨论】:

  • 你可以用 wp_ 替换 $wpdb
  • 出现语法错误。我的所有表名都以 work_ 开头,而不是 wp_。。你能帮帮我吗
  • 然后,添加 work_。这只是一个例子。 wp_ 很常见,所以我用了那个:)
  • 'SELECT * FROM work_posts LEFT JOIN work_term_relationships ON(work_posts.ID = work_term_relationships.object_id) LEFT JOIN work_term_taxonomy ON(work_term_relationships.term_taxonomy_id = work_term_taxonomy.term_taxonomy_id) WHERE (work_term_taxonomy.term_id taxonomy = 'category' AND work_posts.post_type = 'post' AND work_posts.post_status = 'publish')'
  • 你真的是 gr8。其作品。请与我保持联系。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多