代码之家  ›  专栏  ›  技术社区  ›  ST80

Wordpress获取中隐藏输入字段的值函数.php

  •  -1
  • ST80  · 技术社区  · 6 年前

    functions.php ,但我一直 NULL 作为返回值。

    这是我的密码:

    add_filter('woocommerce_add_cart_item_data', 'add_custom_field_data_to_cart', 10, 2 );
    
    function add_custom_field_data_to_cart($cart_item_data, $product_id, $variation_id) {
        $cart_item_data['myHiddenInput'] = $_POST['myHiddenInput']; 
        return $cart_item_data;
    }
    

    无效的 ?

    编辑

    隐藏的输入字段在我的 archive-products.php woocommerce -选购

    <input type="hidden" name="myHiddenInput" value="">
    

    通过使用 javascript

    <input type="hidden" name="chosenDate" value="2018-09-19">
    

    现在,当我进入我的购物车页面-我想让产品有日期列出他们将得到交付(从菜单选项卡的日期,当他们被添加)

    1 回复  |  直到 6 年前
        1
  •  1
  •   kashalo    6 年前

    正如@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
        }
    
    }
    

    enter image description here

    这个 日期