2013-10-22 14 views
12

Jak dodać wartość do atrybutu woocommerce za pomocą kodu? Utworzono atrybut o nazwie "Czas wysyłki" (systematyka: pa_dispatch), a teraz chcę dodać wartość do atrybutu Dispatch danego produktu.woocommerce: dodaj wartość do atrybutu produktu

Jak to zrobić programowo?

enter image description here

Odpowiedz

14

Znalazłem odpowiedź, trzeba użyć wp_set_object_terms ustawić warunki przedmiotu taksonomii,

wp_set_object_terms($object_id, $terms, $taxonomy, $append); 

Gdzie, $ Dołącz mogą być true lub false, jeśli jest prawdziwa, znacznik zostanie dołączony do istniejący tag, jeśli false, tag zostanie zastąpiony.

W moim przykładzie

wp_set_object_terms($object_id, '2 Business Days', 'pa_dispatch' , false); 

Tutaj pa_dispatch jest taksonomia woo-commerce.

+1

dziękuję. gdzie w swoim functions.php umieściłeś to? a czym jest $ object_id? – nicmare

+0

@nicmare Umieść go tam, gdzie chcesz zmienić wartość, ale jeśli umieścisz tę instrukcję bezpośrednio w functions.php, funkcja będzie działała przy każdym wczytaniu pliku! Ponadto $ id_obiektu to nic innego jak identyfikator produktu, tj., identyfikator pocztowy tego konkretnego produktu. – Rao

+0

oczywiście chciałbym wystrzelić z hakiem save_post. spróbuję. dziękuję – nicmare

2

Nie można dodać wartość do atrybutu. Musisz utworzyć zmienną produktu, utworzyć odmianę i przypisać ją za pomocą atrybutu. Teraz w tej odmianie możesz przypisać wartość.

Attributes Configuration

tryb

Variations Configuration

Czytaj:

  1. http://docs.woothemes.com/document/product-variations/
  2. http://www.youtube.com/watch?v=7PX8MWBOAeo

EDYTOWANIE:

Po dalszych wyjaśnieniach dotyczących pytania, oto zaktualizowane rozwiązanie.

Dodaj poniższą funkcję do funkcji functions.php. Zadzwoń na odpowiedni hak i podaj identyfikator produktu, a także wartości atrybutów.

function se19519561_set_attributes($post_id, $attributes) { 

    //Type attribute 
    $product_attributes['type'] = array(
     //Make sure the 'name' is same as you have the attribute 
     'name' => htmlspecialchars(stripslashes('Dispatch Time')), 
     '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); 

} 

Mam nadzieję, że to pomoże!

+0

Nie, to nie jest to, co próbuję osiągnąć, jestem w stanie dodać wartość poprzez GUI, ale chcę to zrobić programowo w php. – Rao

+0

tj., Chcę dodać wartość "3 dni robocze" do atrybutu "Czas wysyłki" danego produktu za pośrednictwem funkcji php. – Rao

+1

Czy chcesz dodać atrybut w locie, gdy strona produktu jest dostępna, czy chcesz dodać to do wszystkich produktów jednocześnie? –

Powiązane problemy