首页 文章

WooCommerce:将“自定义产品属性”移动到“分类法”

提问于
浏览
1

在WooCommerce中,您可以通过两种方式向产品添加属性 .

方法#1

一个 . 在Product-> Attributes中创建一个属性,为它设置一个名称(即颜色),将其定义为选择字段或文本字段 . 保存 .

湾编辑产品切换到属性选项卡,从下拉列表中选择“颜色”,填写一些值 . 保存 .

方法#2

编辑产品,切换到属性选项卡,选择“添加自定义属性”,设置名称,填写一些值 . 保存 .

那么,在方法#1中,属性被保存并连接在三个表上 . wp_terms,wp_term_taxonomies和wp_term_relationship

在方法#2中,属性被序列化并保存在wp_postmeta中,其中'_product_attributes'为meta_key .

我的问题

我现在要做的是将存储在wp_postmeta表中的所有属性移动到wp_meta表,并通过wp_term_taxonomies和wp_term_relationship正确连接它们 .

那有什么解决方案或插件吗?

手动移动它们不是一种选择,因为它们超过500种 .

干杯,

1 回答

  • 1

    有一个WooCommerce-REST-API允许我这样做 . http://woothemes.github.io/woocommerce-rest-api-docs/

    首先,我必须得到存储在wp_term_relathionship中的所有属性(而不是它们的值)的slug和名称 . 由于只有少数,我把它们写下来了 .

    • 获取所有产品的JSON列表

    • 迭代产品的属性

    • 将它的名称和slug与写下来的名称进行比较

    • 如果slug不匹配,请将值写入具有正确slug的属性 .

    示例:Product有两个名为“Color”的属性 . one属性存储在wp_term_relationships中,名称为“Color”,slug为“pa_attr_color” . 另一种颜色作为pa_attributes存储在wp_postmeta中,并具有名称“Color”和slug“wrong_color” . 现在我想将这些值移动到pa_attr_color .

    $product = [product => 
      [
      id => 123, 
      attributes => [
        [name => 'Color', 'slug' => 'pa_attr_color', options => ['red', 'blue']],
        [name => 'color', 'slug' => 'wrong_color', options => ['yellow', 'green']]
      ]]
    

    我现在要做的就是将选项从wrong_color移动到pa_attr_color . 如果没有pa_attr_color,那么我只需要创建一个 .

相关问题