Woocommerce - aktualizacja cen przez sql.

0

Cześć,
mój problem związany jest po części z bazami danych, a po części z frontem woocommerce'a.
Mianowicie - aktualizuję ceny produktów prostych i tych z wariantami w woo przy pomocy sql. Przykład:


UPDATE `baza`.`fs_postmeta` SET `meta_value` = $cenaPLN WHERE `fs_postmeta`.`meta_key` = '_regular_price' AND `fs_postmeta`.`post_id` = $post_id";
UPDATE `baza`.`fs_postmeta` SET `meta_value` = $cenaPLN WHERE `fs_postmeta`.`meta_key` = _price' AND `fs_postmeta`.`post_id` = $post_id";

Wszystkie wartości w bazie danych aktualizują się prawidłowo, zgodnie z tym co wyżej.
Niestety produkty z wariantami nie wyświetlają się w archiwum produktów. Nie widać ich na liście produktów. Dokładniej:

Na stronie produktu(w panelu) widać tą cenę dla wariantów, natomiast produkt nie pojawia mi się w archiwum produktów (domyślnie sortowane wg ceny).
Aby 'ujawnić' tam produkt należy wejść w niego(w panelu) i kliknąć pod wariantami - zapisz zmiany. Po dokonaniu tego zapisu produkt nagle się pojawia.
Wygląda jakbym nie uzupełniał odpowiednich pól dla rodzica wariantu(?).

Generalnie po aktualizacji całości chciałbym symulować wciśnięcie 'zapisz zmiany' dla każdego wariantu. To mogłoby naprawić problem.
Na liście produktów w panelu ten konkretny produkt również nie posiada ceny. Jego warianty owszem, ale sam produkt nadrzędny jej nie ma.

Przed i po aktualizacji cen usuwam cache produktu przy pomocy wc_delete_product_transients($id)
Po aktualizacji aktualizuję posty i ich meta przy pomocy wp_post_update() oraz update_post_meta()

Jest tu jakiś spec od woo, który wie co może być przyczyną? :)

0

Myślę, że powinieneś napisać skrypt w PHP zamiast zmieniać coś na sztywno w bazie.
Znajdź sposób na to, żeby złapać wszystkie produkty jako obiekty do pętli i użyć metody ser_price na tych obiektach.

https://docs.woocommerce.com/wc-apidocs/class-WC_Product.html#_set_price

1 użytkowników online, w tym zalogowanych: 0, gości: 1