WooCommerce:在数据库中查找产品
WooCommerce: Finding the products in database
我正在使用 WooCommerce 创建一个网站,我想根据用户在我主页上的搜索表单中输入的邮政编码来限制用户可以使用的产品。
为了实现这一点,我必须在 phpMyAdmin 的数据库中指定每个产品的条件,但我似乎找不到它。
有人知道产品和/或类别的 woocommerce 数据库在 phpmyAdmin 中的什么位置吗?
提前谢谢你。
2020 年更新
产品主要位于以下表格中:
wp_posts 表与 post_type 类似 product(或 product_variation),
wp_postmeta 表,以 post_id 作为关系索引(产品 ID)。
wp_wc_product_meta_lookup 表,以 product_id 作为关系索引(帖子 ID)|允许对特定产品数据进行快速查询(自 WooCommerce 3.7 起)
wp_wc_order_product_lookup 以 product_id 作为关系索引的表(帖子 ID)|允许快速查询以检索订单上的产品(自 WooCommerce 3.7 起)
产品类型、类别、子类别、标签、属性和所有其他自定义分类位于下表中:
wp_terms
wp_termmeta
wp_term_taxonomy
wp_term_relationships - 列 object_id 作为关系索引(产品 ID)
wp_woocommerce_termmeta
wp_woocommerce_attribute_taxonomies(仅适用于产品属性)
wp_wc_category_lookup(仅适用于自 WooCommerce 3.7 起的产品类别层次结构)
产品类型由自定义分类法product_type使用以下默认术语处理:
- simple
- grouped
- variable
- external
订阅和预订插件的其他一些产品类型:
- subscription
- variable-subscription
- booking
从 Woocommerce 3 开始,一个名为 product_visibility 的新自定义分类句柄:
- 使用条款 exclude-from-search 和 exclude-from-catalog 的产品可见性
- 带有术语 featured 的特色产品
- 带有术语 outofstock 的库存状态
- 从 rated-1 到 rated-5 的评分系统
特性:每个产品属性都是一个自定义分类€|
参考文献:
- 普通表:Wordpress 数据库描述
- 具体表:Woocommerce 数据库说明
下表是存储 WooCommerce 产品数据库:
wp_posts -
WordPress 数据的核心是帖子。它存储一个 post_type 类产品或 variable_product.
wp_postmeta-
每个帖子的特征信息称为元数据,它存储在 wp_postmeta 中。某些插件可能会将自己的信息添加到此表中,例如 wp_postmeta 表中产品的 WooCommerce 插件商店 product_id。
此表中存储的产品类别、子类别:
- wp_terms
- wp_termmeta
- wp_term_taxonomy
- wp_term_relationships
- wp_woocommerce_termmeta
以下查询返回产品类别列表
SELECT wp_terms.*
FROM wp_terms
LEFTJOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id
WHERE wp_term_taxonomy.taxonomy = 'product_cat';
INSERTINTO wp_terms
VALUES
(57, 'Apples', 'fruit-apples', '0'),
(58, 'Bananas', 'fruit-bananas', '0');
INSERTINTO wp_term_taxonomy
VALUES
(57, 57, 'product_cat', '', 17, 0),
(58, 58, 'product_cat', '', 17, 0)
SELECT
term_taxonomy_id
FROM
wp_term_relationships
WHERE
object_id = PRODUCT_ID_HERE
AND
term_taxonomy_id IN
(
SELECT
term_taxonomy_id
FROM
wp_term_taxonomy
WHERE
taxonomy LIKE 'product_cat'
)
SELECT
wp_terms.term_id,
wp_terms.name,
wp_terms.slug,
wp_term_taxonomy.parent
FROM
wp_terms
LEFTJOIN
wp_term_taxonomy
ON wp_terms.term_id = wp_term_taxonomy.term_id
WHERE
wp_term_taxonomy.taxonomy LIKE 'product_cat'
for more reference -
- Database Description
- Fetch the Products of Woocommerce from ita€?s Table in Database
向 Woo 批量添加新类别:
插入类别id、名称、url键
SELECT wp_terms.*
FROM wp_terms
LEFTJOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id
WHERE wp_term_taxonomy.taxonomy = 'product_cat';
INSERTINTO wp_terms
VALUES
(57, 'Apples', 'fruit-apples', '0'),
(58, 'Bananas', 'fruit-bananas', '0');
INSERTINTO wp_term_taxonomy
VALUES
(57, 57, 'product_cat', '', 17, 0),
(58, 58, 'product_cat', '', 17, 0)
SELECT
term_taxonomy_id
FROM
wp_term_relationships
WHERE
object_id = PRODUCT_ID_HERE
AND
term_taxonomy_id IN
(
SELECT
term_taxonomy_id
FROM
wp_term_taxonomy
WHERE
taxonomy LIKE 'product_cat'
)
SELECT
wp_terms.term_id,
wp_terms.name,
wp_terms.slug,
wp_term_taxonomy.parent
FROM
wp_terms
LEFTJOIN
wp_term_taxonomy
ON wp_terms.term_id = wp_term_taxonomy.term_id
WHERE
wp_term_taxonomy.taxonomy LIKE 'product_cat'
将术语值设置为类别
SELECT wp_terms.*
FROM wp_terms
LEFTJOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id
WHERE wp_term_taxonomy.taxonomy = 'product_cat';
INSERTINTO wp_terms
VALUES
(57, 'Apples', 'fruit-apples', '0'),
(58, 'Bananas', 'fruit-bananas', '0');
INSERTINTO wp_term_taxonomy
VALUES
(57, 57, 'product_cat', '', 17, 0),
(58, 58, 'product_cat', '', 17, 0)
SELECT
term_taxonomy_id
FROM
wp_term_relationships
WHERE
object_id = PRODUCT_ID_HERE
AND
term_taxonomy_id IN
(
SELECT
term_taxonomy_id
FROM
wp_term_taxonomy
WHERE
taxonomy LIKE 'product_cat'
)
SELECT
wp_terms.term_id,
wp_terms.name,
wp_terms.slug,
wp_term_taxonomy.parent
FROM
wp_terms
LEFTJOIN
wp_term_taxonomy
ON wp_terms.term_id = wp_term_taxonomy.term_id
WHERE
wp_term_taxonomy.taxonomy LIKE 'product_cat'
17 - 是父类别,如果有的话
这里的关键是确保 wp_term_taxonomy 表 term_taxonomy_id、term_id 等于 wp_term 表的 term_id
完成上述步骤后,转到 wordpress 管理员并保存任何现有类别。这将更新数据库以包含您批量添加的类别
通过提供 product_id(wp_posts ID 列)获取产品类别 ID:
SELECT wp_terms.*
FROM wp_terms
LEFTJOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id
WHERE wp_term_taxonomy.taxonomy = 'product_cat';
INSERTINTO wp_terms
VALUES
(57, 'Apples', 'fruit-apples', '0'),
(58, 'Bananas', 'fruit-bananas', '0');
INSERTINTO wp_term_taxonomy
VALUES
(57, 57, 'product_cat', '', 17, 0),
(58, 58, 'product_cat', '', 17, 0)
SELECT
term_taxonomy_id
FROM
wp_term_relationships
WHERE
object_id = PRODUCT_ID_HERE
AND
term_taxonomy_id IN
(
SELECT
term_taxonomy_id
FROM
wp_term_taxonomy
WHERE
taxonomy LIKE 'product_cat'
)
SELECT
wp_terms.term_id,
wp_terms.name,
wp_terms.slug,
wp_term_taxonomy.parent
FROM
wp_terms
LEFTJOIN
wp_term_taxonomy
ON wp_terms.term_id = wp_term_taxonomy.term_id
WHERE
wp_term_taxonomy.taxonomy LIKE 'product_cat'
获取类别数据(名称,slug)和类别层次结构:
SELECT wp_terms.*
FROM wp_terms
LEFTJOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id
WHERE wp_term_taxonomy.taxonomy = 'product_cat';
INSERTINTO wp_terms
VALUES
(57, 'Apples', 'fruit-apples', '0'),
(58, 'Bananas', 'fruit-bananas', '0');
INSERTINTO wp_term_taxonomy
VALUES
(57, 57, 'product_cat', '', 17, 0),
(58, 58, 'product_cat', '', 17, 0)
SELECT
term_taxonomy_id
FROM
wp_term_relationships
WHERE
object_id = PRODUCT_ID_HERE
AND
term_taxonomy_id IN
(
SELECT
term_taxonomy_id
FROM
wp_term_taxonomy
WHERE
taxonomy LIKE 'product_cat'
)
SELECT
wp_terms.term_id,
wp_terms.name,
wp_terms.slug,
wp_term_taxonomy.parent
FROM
wp_terms
LEFTJOIN
wp_term_taxonomy
ON wp_terms.term_id = wp_term_taxonomy.term_id
WHERE
wp_term_taxonomy.taxonomy LIKE 'product_cat'
我建议使用 WordPress 自定义字段来存储每个产品的合格邮政编码。 add_post_meta() 和 update_post_meta 是你要找的。不建议更改默认的 WordPress 表结构。所有 postmetas 都插入到 wp_postmeta 表中。您可以在 wp_posts 表中找到相应的产品。