[WooCommerce]バリエーションのある商品のJSONデータが吐き出されない問題を解決する

  • 更新日:
  • 公開日:

WooCommerceを使用したECサイトで、商品ページにバリエーションのJSONデータが表示されない状況になりました

本来formタグのカスタムデータ「data-product_variations」にバリエーションのJSONデータが渡ってくるのですが、何故か値が「false」となって専用プログラムで不具合が発生。

商品の登録方法の違いかと思いましたが原因は別にありました。バリエーションの数が多い場合を考慮して、組み合わせが30より多い場合はJSONデータが吐き出されない仕様になっているようです。

バリエーションの組み合わせが30より多い場合もJSONデータを出力する

というわけで、いつものようにフックを使いサクっと解決します。デフォルトの閾値は30と設定されているのでこの値を大きくしてやりましょう。以下のコードをfunctions.phpなどに記述して数値を弄ります。

<?php
function custom_wc_ajax_variation_threshold( $qty, $product ) {
 return 100;
}

add_filter( 'woocommerce_ajax_variation_threshold', 'custom_wc_ajax_variation_threshold', 10, 2 );

3行目の数値を任意の値に変更します。もちろん、大きい数値であるほどパフォーマンスが落ちる可能性があることにご注意ください。


参考:

Variations filter not working properly when multiple product attributes used · Issue #16104 · woocommerce/woocommerce

WooCommerce – Change ajax variation threshold

書いた人

Symbol Mark

Ryoichi(しつ)

除菌ティッシュを買い込んで使いきれずによく乾かす人。

療養目的で退職し、どうやって生きていくか模索中。最近は勉強目的でLaravelやVue.js弄ったり、趣味で音で遊んでます。

※2019年10月16日現在ブログリニューアル中です。崩れなどが発生していたらすみません。

うぇぶ: @s_ryone