
기존에 생각하기론 개수 조정 시 ajax 처리로 뭔가 복잡한 준비 과정을 추가해야 할 것으로 알고 있었는데, 이미 있는 업데이트 버튼을 활용해서 간단히 trigger 이벤트를 자동 적용해도 똑같은 결과가 나오게 되는 것을 확인했습니다.
과정은 간략히 아래와 같습니다.
- 장바구니 업데이트 버튼을 화면에서 숨김 (완전 없애면 동작 X)
- 개수가 변경되는 동작이 감지되면, 일정 시간 후(0.5초) 숨겨둔 업데이트 버튼이 자동 클릭되도록 처리 (변경할때마다 처리를 하면 너무 많은 AJAX requests 발생!)
/** * Add styles,scripts to wp_footer() */ function child_theme_footer_script() { if (is_cart()) { ?> <style> .woocommerce button[name="update_cart"], .woocommerce input[name="update_cart"] { display: none; } </style> <script> var timeout; jQuery( function( $ ) { $('.woocommerce').on('change', 'input.qty', function(){ if ( timeout !== undefined ) { clearTimeout( timeout ); } timeout = setTimeout(function() { $("[name='update_cart']").trigger("click"); }, 500 ); // 500 = 0.5초 }); } ); </script> <?php } } add_action( 'wp_footer', 'child_theme_footer_script', 99 );