Woocommerce:基于用户输入的自定义价格 - php

我不想在这里发布,但找不到所需的答案,我也没有足够的声誉来评论其他非常相似的问题,以获取确切答案。

我从这篇文章中找到了一个几乎完美的答案:WooCommerce: Add product to cart with price override?

使用代码:

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price');

function add_custom_price( $cart_object ) {
      $custom_price = 10; // This will be your custome price  
      foreach ( $cart_object->cart_contents as $key => $value ) {
          $value['data']->price = $custom_price;
      }
 }

如果您设置了硬编码的自定义价格,它的效果很好...

我的问题是:如何根据用户输入设置自定义价格?

我已经尽我所能尝试传递信息了(我什至尝试使用Cookie,全局变量,会话),但没有一个能按我的意愿工作,而所有这些,在最好的情况下都是黑客。

所讨论的特定产品是捐赠,客户希望用户能够设置捐赠价格(而不仅仅是创建具有设置价格点的可变产品)。

在捐赠页面上,当用户提交捐赠表格时,我将捐赠产品添加到购物车中,如下所示:

$donation_success = $woocommerce->cart->add_to_cart($donation_id); 

我的捐赠产品的设定价格为0.00,因此将其添加到购物车时,其价格为0.00(我不知道价格是现在还是以后设定)

我已经尝试过使用add_to_cart方法中的最后一个变量来传递信息,该方法接受一个参数数组,但我似乎也无法使它起作用。

我相信答案很简单,但是我已经尝试了好几个小时才能做到这一点,但我无法使其正常工作。我没主意了。

我目前使用的实际代码与上述帖子的回答者所建议的稍有不同,但工作原理基本相同:

add_action( 'woocommerce_before_calculate_totals', 'woo_add_donation');

function woo_add_donation() {
    global $woocommerce;

    $donation = 10;
    foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        if($cart_item['data']->id == 358 || $cart_item['data']->id == 360){
            $cart_item['data']->set_price($donation);
        }
    }
}

在此先感谢您提供任何有用的建议!

参考方案

我找到了一个不是很优雅但可以满足我目的的解决方案。

我之前曾尝试使用Cookie,但未设置Cookie路径,因此该路径仅可用于所设置的页面。

我现在用捐赠价格设置一个cookie:

setcookie("donation", $_GET['donation'], 0, "/");

然后我像这样设定价格:

add_action( 'woocommerce_before_calculate_totals', 'woo_add_donation');

function woo_add_donation() {
    global $woocommerce;

    foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        if($cart_item['data']->id == 358 && ! empty($_COOKIE['donation'])){
            $cart_item['data']->set_price($_COOKIE['donation']);
        }
    }
}

如何在Woocommerce中的“添加到购物车”按钮上显示加载图标 - php

我想在用户单击添加到购物车按钮上时显示一个加载符号。当前在我的网站上,当用户单击按钮时,它在2-4秒内不执行任何操作并显示查看购物车按钮。我想在这4秒钟内显示一些加载或旋转图标。可能吗?有人可以指导我吗链接:http://www.myeatable.com/cnc-ongole/ php参考方案 对于添加到购物车上的加载图像,我可能建议在您的js中编写代码,…

php:是否有充分的理由引用所有数组键/索引? - php

我正在遍历别人的代码,他们总是避免转义其数组键。例如:$ row_rsCatalogsItems [名称]代替$ row_rsCatalogsItems ['名称']因此,我不断地对自己接触的所有事物进行微小的更改,以应对这些惰性。但是现在我想知道这样做是否有很多好处。我得到它会在默认为字符串之前检查常量(我在处理常量时会讨厌php中的行为,因为即使未定义,…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

PHP标头功能不起作用 - php

我曾经使用此功能从一个PHP页面重定向到另一个:header( 'Location: student.php?cnp='.$_REQUEST['name']) ; 在我的本地主机中,它确实可以工作,但是如果在Internet中对其进行测试,则不会重定向。我也尝试给出完整的路径(如http://.../student.p…

为什么在PHP中将函数存储为变量 - php

我已经在php文档中看到了这种做法:$foo = function() { echo 'foo'; } $foo(); 您为什么要这样做,而不仅仅是:function foo() { echo 'foo'; } foo(); 参考方案 它们在某些方面很有用。我个人使用它们是因为它们比实际功能更易于控制。而且,匿名函数可…