0

私は現在、WooCommerceとさまざまな拡張機能を使用しているWebサイトを開発しています(これらはすべて書面で最新です)タイプ。WooCommerceで可変購読製品をプログラムで作成する際の問題

これらの投稿は、別注ACFフォームを使用して、ウェブサイトのフロントエンドのウェブサイトユーザーによって作成されます。フロントエンドフォームは、サブスクリプション用と予約用の2つの新製品と共に、ポストタイプの「shimmer-pools」に新しいポストを作成します。

これらの新しい投稿の作成は、別注のクラスShwimmerFormHandlerで処理されます。このクラスは、プール作成フォームが送信されたときに起動されます。このGistでクラスを見ることができます: https://gist.github.com/mangopearuk/c10c52498547016c6aa23c6cca26fb43

私たちが直面している問題はSubscriptions製品にあります。プール作成者は、大人、子供、家族の6つの異なる価格帯を設定できるため、製品は可変契約製品である必要があります。&月または年のサブスクリプション。

現在、wp_insert_post()[line 285]を使用して新しいサブスクリプション製品を作成しており、wp_insert_post()[行478から]を使用して各バリエーションを作成しています。これらはすべて正常に登録されており、動作しています。

フロントエンドの購読購入フォームを表示すると、価格が正しくないという問題があります。また、バリエーションを選択すると、「申し訳ありません、この商品は利用できません。 "

adminで「更新」を押すと、サブスクリプション製品が正常に動作します。どのようにこの問題を解決するためのアイデアですか?

ありがとう、アンディ

+0

はい、サブスクリプションIDがクラス内で作成される方法です。 –

答えて

2

おそらく、可変製品の同期をトリガーする必要があります。あなたは同期機能が_priceメタのオフに働く発見(万全を期すためにここに追加)しているとしても

$subscription_id = wp_insert_post($args); 
$product = wc_get_product($subscription_id); 
$product->variable_product_sync(); 

、。 _regular_priceおよび_sale_priceもまた比較される。サブスクリプションは_subscription_price_regular_priceと設定し、_priceは、アイテムが販売中かどうかによって_regular_priceまたは_sale_priceのいずれかになります。プログラムでサブスクリプションを作成している場合は、_price_regular_priceメタを必ず設定する必要があります。

+0

残念ながら、それは動作しませんでした。私も試しました: '$ product-> sync($ subscription_id);' - どちらもうまくいきませんでした。 –

+0

申し訳ありません、私は前に同様の問題を見て、それがそれだと思った。すべてのバリエーションに価格がありますか? – helgatheviking

+0

はい、すべてのバリエーションデータが正しいフィールドに保存されています。投稿を手動で編集して更新するまではフロントエンドに表示されません。 –

1

ありがとうございました。実際には簡単に修正することができます...

サブスクリプションプラグインには、_price_regular_priceのメタフィールドは表示されませんが、sync()関数で必要です。これらの2つのフィールドをクラスに追加すると、sync()関数が機能しました。

関連する問題