WooCommerce:移动"自定义产品属性"到分类学"

时间:2016-03-03 17:24:45

标签: wordpress woocommerce

在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 个答案:

答案 0 :(得分:1)

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

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

  1. 获取所有产品的JSON列表
  2. 迭代产品的属性
  3. 将它的名称和slug与写下的名称进行比较
  4. 如果slug不匹配,请将值写入具有正确slug的属性。
  5. 实施例: 产品有两个称为“颜色”的属性。 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,那么我只需要创建一个。