2013-11-28 103 views
3

能否請讓我知道如何以編程方式在WooCommerce中添加自定義產品屬性和變量?我知道這很容易在Woocommerce GUI完成,但我需要通過functions.php以編程方式在WooCommerce中添加自定義產品屬性和變量

這樣做我有一個屬性被稱爲「類」和一些變量作爲[A,B,C,D]現在我想將它們添加到購物車和購物網頁,我alraedy試過這個功能,但它沒有添加任何東西到頁面:

function woocommerce_variable_add_to_cart() { 
    //Type attribute 
    $product_attributes['type'] = array(
     //Make sure the 'name' is same as you have the attribute 
     'name' => htmlspecialchars(stripslashes('Class')), 
     'value' => $attributes, 
     'position' => 1, 
     'is_visible' => 1, 
     'is_variation' => 1, 
     'is_taxonomy' => 0 
    ); 

//Add as post meta 
update_post_meta($post_id, '_product_attributes', $product_attributes); 

} 

感謝

+0

任何一個是否有任何想法這個? – Behseini

+0

我以前做過這個,雖然我不能發佈代碼(NDA),但我可以告訴你,你需要使用'woocommerce_cart_loaded_from_session','woocommerce_before_cart'和(如果使用AJAX)'woocommerce_ajax_added_to_cart'習慣如果您使用AJAX,使用'$ woocommerce-> session'和'$ woocommerce-> cart'在兩個位置更新。當以編程方式調整購物車項目中的屬性時,這些都是必需的。 – Dez

+0

http://wordpress.stackexchange.com/questions/124758/adding-custom-product-attribute-and-variable-in-woocommerce-programatically – GavinR

回答

0

我只注意到你上面的函數是指一個「$屬性「看起來不像它在該函數中定義的那樣。希望你的那個函數的工作拷貝修復了其他值=> NULL,這可能是你更新失敗的原因。

另一方面,我認爲你的$ product_attributes定義不明確(雖然我不是100%確定)。

我使用值「my_custom_value」創建了一個名爲「my_attr_name」的自定義屬性,並檢查了MySQL數據庫以查看它是如何存儲的。它存儲在表「wp_postmeta」中,meta_key = _product_attributes和「meta_value」serialized。所以我複製了這個序列化的值,試圖反序列化它,看看它應該如何定義。它看起來像你的,除了你的屬性鍵(即'type')和子數組的第一個鍵的值應該匹配。

這是我的例子:

Array 
(
    [john-doe] => Array 
     (
      [name] => 'John Doe' 
      [value] => my_custom_value 
      [position] => 0 
      [is_visible] => 1 
      [is_variation] => 0 
      [is_taxonomy] => 0 
     ) 

) 

正如你所看到的陣列的主要約翰母鹿〜子陣(這也是李四)的第一個關鍵。你的情況:

type <> htmlspecialchars(stripslashes('Class')) 

它值得一提的是,如果你的「名」 =>「李四」,那麼主密鑰應該像「約翰 - 美國能源部(小寫和減號作爲空間更換)。我不知道這是否是必須的,但至少這是WP 4.2.2的工作方式。

至於其他的鍵:

  • is_visible:如果該屬性是可見的產品頁面
  • 位置上:屬性的(順序0 =第一,1 =下一個屬性,等等);我認爲這個應該總是定義,否則你冒險覆蓋第一個(0)索引;所以你應該找出它們添加一個新的之前它們有多少(見$ meta = get_post_meta(get_the_ID(),'_product_attributes'))
  • is_variation:可能是smth。可變產品做
  • is_taxonomy(?!):我覺得應該是始終作爲meta_key不視爲分類(只是猜測)
相關問題