正如@LoicTheAztec所说
您不能通过ajax add to cart按钮从任何存档页传递任何自定义内容,就好像您查看ajax add to cart的源代码一样,因为没有可能的附加参数或钩子。因此,您将需要构建自己的Ajax add-to-cart功能,这是一项庞大而复杂的工作。所以您的钩子函数woocommerce\u add\u cart\u item\u data将不起作用
弗斯特
让我们在“添加到购物车”按钮中添加这些值作为属性,而不是
input
标签。
woocommerce_loop_add_to_cart_args
挂钩如下:
add_filter( 'woocommerce_loop_add_to_cart_args', 'change_item_price', 10, 2 );
function change_item_price( $args, $product ) {
$args['attributes'] = $args['attributes'] + [ 'data-chosen-date' => '2018-09-19' ];
return $args;
}
add_action( 'wp_footer', 'script' );
function script() {
if ( is_shop() ) {?>
<script>
document.body.addEventListener('click', add_to_cart);
function add_to_cart(e) {
if (e.target.classList.contains('add_to_cart_button')) {
let val = e.target.getAttribute('data-chosen-date');
let product_id = e.target.getAttribute('data-product_id');
sessionStorage.setItem(product_id, val);
}
}
</script>
<?php
}
if ( is_cart() ) {
?>
<script>
var items = document.querySelectorAll("td");
items.forEach(function (item, index) {
if (item.classList.contains('product-remove')) {
var id = item.childNodes[1].getAttribute('data-product_id');
if (sessionStorage.getItem(id)) {
var textnode = document.createElement('p');
textnode.innerHTML = sessionStorage.getItem(id);
item.nextElementSibling.nextElementSibling.appendChild(textnode)
}
}
}); </script>
<?php
}
}
这个
日期