我正在运行WordPress
和woocommerce
我有一个自定义功能,可以将东西添加到购物车中,如下所示:
function custom_add_products_to_cart(){
WC()->cart->empty_cart();
$request_body = file_get_contents('php://input');
$decoded = json_decode($request_body);
$cartElements = $decoded->addToCart;
foreach ( $cartElements as $product_id ) {
WC()->cart->add_to_cart( $product_id );
}
if ( $decoded->Uid ) {
WC()->session->set( 'uid', $decoded->Uid );
}
die();
};
这是一个非常简单的功能。它所做的就是遍历产品ID列表并启动默认的Woocommerce添加到购物车功能。
我遇到的问题是,这在我的localhost上工作得很好(也调试它的行为就像预期的那样)但是当我在测试服务器上试用它时它不起作用。
该功能正在激活(我试图打印一些消息)但是购物车没有清空,并且没有添加新产品。
我检查代码,提交和修订,一切都正确。
它还能做什么?
我最后的想法是关于PHP的版本:
我的localhost运行7.1.2,而测试服务器运行7.0.22 - 它可以是PHP版本吗?关于我还能尝试什么的任何想法?
很抱歉,如果我无法提供更多详细信息,但不幸的是,还有更多信息要添加...
此外,我现在不会将此发布到WordPress社区,因为我认为它不是WordPress相关的东西(也不是woocommerce),而是PHP代码(可能我的功能有点不对?)或PHP版本
提前感谢所有人
答案 0 :(得分:0)
我认为问题出在这里
file_get_contents('php://input');
取决于您的PHP配置,您可能需要更改php.ini中的allow_url_fopen
设置。
你有两种方法可以绕过它而不用改变php.ini,其中一种是使用fsockopen(),另一种是使用cURL。
我建议使用cURL而不是file_get_contents(),因为它是为此而构建的。
答案 1 :(得分:-1)
最后,我只需通过调用两个函数来解决这个问题:
第一个清空推车:
#include "variables.h"
...
global1 = foo;
...
并且第二个继续添加到购物车:
function empty_cart(){
WC()->cart->empty_cart();
}
现在它正常运作。