【问题标题】:Get all subcategories id's ( their subcategories too) from category slug of woocommerce category从 woocommerce 类别的类别 slug 获取所有子类别 id(它们的子类别)
【发布时间】:2015-09-18 02:56:39
【问题描述】:

我尝试了很多方法来从 sql 中的类别 slug 中获取其 slug 为 (音乐、服装) 的类别及其子类别及其子类别的 ID。

我似乎在我的 sql 查询中遗漏了一些东西。

这里是查询:

  "SELECT ".$wpdb->terms.".term_id FROM ".$wpdb->terms." INNER JOIN ".$wpdb->term_taxonomy." ON ".$wpdb->terms.".term_id = ".$wpdb->term_taxonomy.".term_id WHERE ".$wpdb->term_taxonomy.".parent in (SELECT ".$wpdb->terms.".term_id FROM ".$wpdb->terms." WHERE ".$wpdb->terms.".slug in ('music','clothing'))";

它返回类别 slug(音乐、服装)的子类别 id,但如果它们与类别 slug(音乐、服装)的 id 一起存在,我也需要它们的子类别 id。

谁能帮我实现这个目标。

【问题讨论】:

  • 您尝试直接从数据库中获取此信息而不是使用内置函数的任何特殊原因?
  • 更有理由使用内置函数。它可能会更快,特别是如果您需要重复查询(由于类别等对象的内部缓存),不太容易出错和意外的安全漏洞(因为您让 wordpress 编写实际的查询),并且 更面向未来(数据库结构比 wordpress 函数更可能发生变化)....如果函数存在,则使用它只是一个好习惯。 get_categories 无疑会比任何直接的数据库查询更好地解决您的问题。

标签: php mysql wordpress plugins woocommerce


【解决方案1】:

试试下面的查询:

//Dont forget to change `woo` to your database prefix
SELECT a.term_id, a.name FROM `woo_terms` a INNER JOIN `woo_term_taxonomy` b on a.term_id=b.term_id WHERE b.parent IN (SELECT term_id FROM `woo_terms` WHERE slug IN ('music', 'clothing')) OR a.slug IN ('music', 'clothing')

希望对您有所帮助。如果您有任何疑问,请告诉我。

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 2011-07-30
    相关资源
    最近更新 更多