Thème: comment puis-je ajouter des métadonnées à un panier d'un article?
J'ai un produit numérique qui est décrite par une quantité et un prix, mais qui a aussi besoin de plus de 3 numéros pour spécifier complètement (Unix dates, etc). Problème: comment puis-je obtenir ces numéros dans le panier?
Aussi loin que je peux voir, il y a 2 façons de le gérer:
- Une variation du produit
- Un produit de champ personnalisé
Il ressemble variations ne peuvent gérer discret valeurs avec une gamme limitée (ie. rouge/jaune/vert, S/M/L, etc), et ne peut pas gérer général entiers, comme les dates. Que les feuilles des champs personnalisés. Je pense que j'ai raison en disant que les champs personnalisés sont des méta-données sur le produit après page, donc je peux les manipuler avec get_post_meta
et update_post_meta
.
Donc, si je pars pour les champs personnalisés, puis j'ai mis à jour la page du produit terrain lors de la commande, et puis j'ai lus le terrain lors de la commande, lorsque le WC_Order
est créé, et ajouter le champ à la nouvelle commande. Toutefois, cela ne fonctionne pas. Je ne peux pas modifier les métadonnées sur la page du produit, parce que le produit est globale pour tous les clients, et cette opération pourrait interférer avec d'autres clients. En d'autres termes, vous ne pouvez pas stocker des informations dans un produit, si aucune de ces options serait de travailler.
Alors, comment puis-je le stockage temporaire de produits de métadonnées et de les transmettre entre la commande et la caisse des phases (ie. entre WC_Cart
et WC_Order
)?
Une option serait de le stocker en tant que utilisateur de métadonnées (ou que les données de session?), mais il doit y avoir une meilleure façon - des idées?
OriginalL'auteur EML | 2015-04-30
Vous devez vous connecter pour publier un commentaire.
Il s'avère être facile de faire cela avec les données de session. Lorsque vous ajoutez un article à votre panier (voir la source pour
add_to_cart_action
) vous pouvez créer une variable de session, contenant tous vos méta-données:Lorsque l'utilisateur vérifie, le panier de données disparaît, et un ordre nouveau est créé. Vous pouvez brancher dans
woocommerce_add_order_item_meta
pour ajouter de la session de méta-données de l'ordre méta-données:Que c'est. Vous n'avez pas à comprendre comment obtenir l'ordre de métadonnées et faire quelque chose d'utile avec lui, si. Vous pouvez également effacer les données de la session, des crochets en
woocommerce_before_cart_item_quantity_zero
, etwoocommerce_cart_emptied
. Il y a gist ici qui a un exemple de code pour cela.woocommerce_add_order_item_meta
est depracated: docs.woothemes.com/wc-apidocs/... Peut-êtrewc_add_order_item_meta
peut être utilisé: docs.woothemes.com/wc-apidocs/...La fonction est obsolète, le crochet peut encore être utilisé.
maintenant, le crochet est également déconseillé.
woocommerce_new_order_item
doit maintenant être utilisé.OriginalL'auteur EML