当前位置: 首页 > 知识库问答 >
问题:

将产品自定义字段值保存在购物车中,并在购物车和结帐时显示

南宫鸿晖
2023-03-14

我已经在woocommerce单一产品页面上添加了一些自定义选项,使用了下面关于我的主题函数的代码。php:

     function options_on_single_product(){
     ?>
      <input type="radio" name="option1" checked="checked" value="option1"> option 1 <br />
      <input type="radio" name="option1" value="option2"> option 2
       <?php
      }
       add_action("woocommerce_before_add_to_cart_button", "options_on_single_product");

现在我想在购物车页面上显示所选的选项值。请帮我做这件事。谢啦

共有1个答案

佴保臣
2023-03-14

以下是在购物车对象中存储产品自定义字段并在购物车和结帐页面中显示该字段的完整代码:

// Output the Custom field in Product pages
add_action("woocommerce_before_add_to_cart_button", "options_on_single_product", 1);
function options_on_single_product(){
    ?>
        <label for="custom_field">
            <input type="radio" name="custom_field" checked="checked" value="option1"> option 1 <br />
            <input type="radio" name="custom_field" value="option2"> option 2
        </label> <br />
    <?php
}

// Stores the custom field value in Cart object
add_filter( 'woocommerce_add_cart_item_data', 'save_custom_product_field_data', 10, 2 );
function save_custom_product_field_data( $cart_item_data, $product_id ) {
    if( isset( $_REQUEST['custom_field'] ) ) {
        $cart_item_data[ 'custom_field' ] = esc_attr($_REQUEST['custom_field']);
        // below statement make sure every add to cart action as unique line item
        $cart_item_data['unique_key'] = md5( microtime().rand() );
    }
    return $cart_item_data;
}

// Outuput custom Item value in Cart and Checkout pages
add_filter( 'woocommerce_get_item_data', 'output_custom_product_field_data', 10, 2 );
function output_custom_product_field_data( $cart_data, $cart_item ) {
    if( isset( $cart_item['custom_field'] ) ) {
        $cart_data[] = array(
            'key'       => __('Custom Item', 'woocommerce'),
            'value'     => $cart_item['custom_field'],
            'display'   => $cart_item['custom_field'],
        );
    }
    return $cart_data;
}

代码进入函数。活动子主题(或主题)或任何插件文件中的php文件。

此代码经过测试并有效。

 类似资料:
  • 我使用的是一个自定义的帖子类型和集成的woocommerce,我可以在页面上添加一个AddtoCart按钮,并可以将其添加到cart,所以效果很好 这是我的密码 但现在我需要在产品页面上添加一些自定义字段,一个包含颜色“黑色”和“白色”的下拉列表,这只是一个普通的下拉列表。当我选择一个将在购物车上显示在产品名称下的值时,我该怎么做

  • 我在产品页面的常规设置选项卡上创建了一个自定义字段WooCommerce Admin,以插入一些天的制造。我想在购物车和结账页面上显示每个产品名称上方的自定义字段值。 这是我的密码: 但这不起作用,因为我无法在购物车和结帐页面上显示自定义字段值。 我该如何实现这一点? 谢啦

  • 我正在尝试获取WooCommerce产品的自定义字段值,以显示在商店系统的不同页面上。我成功地对单个产品页面执行了此操作,但相同的代码不适用于购物车。 对于单个产品,我在函数中使用了此代码。php,它可以很好地工作: 我为购物车尝试了相同的代码,但这次值没有显示在页面上。我还提到了这个线程(获取自定义属性),将$post更改为$product,但仍然没有输出。。。 有什么建议吗?

  • 我在我的产品页面中创建了一个自定义保修字段,通过function.php. 我想“复制”这个自定义字段的键和值,在一个自我生成的自定义字段的管理订单页面上,根据产品在购物车/订单(无插件)。 因此,通过订单页面上的这个自定义字段,我将最终能够使用WooCommerce pdf发票插件在我的pdf发票中显示“保修”。 另一种解释是: 作为管理员,我在“产品1”页面填写保修值 当订单中有“produc

  • 问题内容: 我有上面的代码。 如果我在cart_item上运行print_r,我将得到一个多维数组: 我如何只获得product_id? 我试过$ test = 没用 问题答案: 要获取 foreach循环中的每个购物车商品(对于简单产品): 如果是可变产品,请获取 : 或在两种情况下 ( Woocommerce 3+中 的 Object在哪里) : 更新: 循环外使用产品ID 1)打破循环 (仅

  • 我的职责是编写以下代码: 有没有人能把我推向正确的方向,让我在购物车、结帐、邮件和订单中获得正确的值? 最初取自这里在WooCommerce 3中到处显示ACF产品自定义字段