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行目の数値を任意の値に変更します。もちろん、大きい数値であるほどパフォーマンスが落ちる可能性があることにご注意ください。
参考: