我正在创建一个woocommerce主题,我有产品变化,即大小,显示在产品详细信息页面上,但问题是我想通过使用产品ID获取我的自定义php页面中的所有变体,任何人都可以帮助我.
提前致谢.
我需要做什么: 我想在添加到购物车之前对产品进行一些检查. 更确切地说: 我想比较我即将添加到购物车的产品,以及已添加的产品,以查看是否存在一些冲突. 一个例子: 假设我们有一款名为"Both shoes"的产品和一款名为"左鞋"的产品.用户将"左鞋"添加到购物车.然后他加上"两双鞋".我想打印一个错误,而不是添加"两双鞋":对不起,但是如果你已经将左鞋添加到购物车中,则无法添加两双鞋.如果你想买"两双鞋",请先删除"左鞋".
我看过class-wc-cart.php,我在第811行发现了一个动作挂钩,但为时已晚!这是在产品添加之后
"do_action('woocommerce_add_to_cart',$ cart_item_key,$ product_id,$ quantity,$ variation_id,$ variation,$ cart_item_data);"
add_to_cart方法从第705行开始. http://wcdocs.woothemes.com/apidocs/source-class-WC_Cart.html#705
我的"产品冲突管理器"功能怎么能在第801行之前被吸引,而不会破坏woocommerce?
谢谢!
我刚刚在PHP 5.4上安装了woocommerce 2.0(在Wordpress上),我得到了这个:
严格标准:WC_Gateway_BACS :: process_payment()的声明应与D:\ my\path\to\htdocs\wordpress\plugins\woocommerce\classes\gateways\bacs\class-wc-gateway中的WC_Payment_Gateway :: process_payment()兼容-bacs.php在线......
我检查文件,发现WC_Payment_Gateway没有方法process_payment().我需要知道如何解决这个问题(不是通过设置error_reporting()).
什么是PHP中的严格标准?
在什么条件下我们得到那个错误?
我正在尝试编辑简短描述模板,使其在变量(单个)产品页面上与在简单产品上不同.该页面中的代码如下:
global $post;
if ( ! $post->post_excerpt )
return;
?>
<div itemprop="description">
<?php echo apply_filters( 'woocommerce_short_description', $post->post_excerpt ) ?>
</div>
Run Code Online (Sandbox Code Playgroud)
我想在if语句中添加一些类似的代码
如果帖子有变化,请不要显示简短描述,如果简单产品DO显示
但我在代码中找不到任何方法来区分常规的简单产品帖子和可变的产品帖子(有变化).通过Woo网站(http://docs.woothemes.com/wc-apidocs/)查看API文档,我发现没有那种.
如何将自定义字段添加到产品类别?我已经为产品添加了自定义字段,但我找不到任何扩展,它提供了向产品类别添加自定义字段的功能.
请帮忙
我试图在变化下拉列表中显示产品变化价格.我试图更改默认行为,当您在下拉列表中选择变体时,在div内显示价格.
问题是我无法找到div获得变化价格的地方.我搜索了所有的JavaScript但无法找到它
如果我使用:
add_filter('woocommerce_variation_option_name' ,'add_price_to_dropdown');
function add_price_to_dropdown($name){
global $product;
return $name.' '.$product->get_price_html();
}
Run Code Online (Sandbox Code Playgroud)
我只是获得所有选项的最小变化价格.我想得到每个变化的价格.任何线索?
在该add_to_cart功能期间,有一个过滤器可以添加"购物车项目数据".过滤器是woocommerce_add_cart_item_data.我希望将自定义插件数据存储在此中,以便相对于项目存储数据,并且可以使用不同的数据添加多个产品.
这一切似乎都有效,但我无法检索数据.我无法弄清楚.数据在那里,我可以在序列化的字符串中看到它,但我不能把它拉出来.
echo '<pre>';
var_dump( WC() );
foreach( WC()->cart->get_cart() as $cart_item ) {
var_dump( $cart_item );
var_dump( WC()->cart->get_item_data( $cart_item ) );
}
echo '</pre>';
Run Code Online (Sandbox Code Playgroud)
第一个转储WC()有一个属性:session->_data->cart->(serialized data).但是,_data属性受到保护,但我可以在序列化数据中看到我的自定义字段.
$ cart_item是一个包含product_id和其他一些数据的数组,但它不包含我的自定义数据:(
最后,使用get_item_data()我认为我已经弄明白的方法.我传递了购物车项目对象,并且...一个空字符串.如果我传递密钥,而不是购物车项目本身,则相同.
我该如何访问购物车商品数据?
这是"添加购物车项目数据"功能,它起作用(或者至少看起来有效):
function save_class_menu_selection( $cart_item_data, $product_id, $variation_id ) {
if ( !product_is_class( $product_id ) ) return $cart_item_data;
// Save the date, or give a fatal warning. Date is required.
if ( !empty($_REQUEST['class-date']) ) {
$cart_item_data['class-date'] = stripslashes($_REQUEST['class-date']); …Run Code Online (Sandbox Code Playgroud) 我试图找出WooCommerce在WooCommerce中成功,错误或通知时创建的消息.我想编辑这些消息以更整洁地适应场景并编辑HTML.这些消息位于何处以及如何编辑它们?
我已经安装了woocommerce来处理wordpress商店的产品输入和结账流程.
商店页面是定制的,允许用户从列表中选择产品并定制它,根据存储在数据库中的信息以javascript输出价格.
存储在数据库中的产品的价值为0.00,因为根据所选的变量,它们的价格不同.
我准备传递给woocommerce的输出数据如下:
我正在尝试找到一种方法,使用产品ID将产品添加到购物车(使其有效),然后使用自定义价格覆盖价格并附加大部分将在结帐时看到的元数据,其中一个将被隐藏直到wordpress管理员看到.
通过使用以下方式将产品添加到购物车:
$woocommerce->cart->add_to_cart($_POST['custom_product_id']);
Run Code Online (Sandbox Code Playgroud)
在此之后,我发现无法覆盖价格并添加其他信息.
使用Woocommerce 2.6.8,我无法获得文档中描述的订单项数据信息,这里也是SO.
我想要的只是得到行项目价格和数量,这应该是这样简单:
$order = new WC_Order( $order_id );
$order_items = $order->get_items();
foreach ($order_items as $items_key => $items_value) {
echo $items_value['name']; //this works
echo $items_value['qty']; //this doesn't work
echo $items_value[item_meta][_qty][0]; //also doesn't work
echo $items_value['line_total']; //this doesn't work
}
Run Code Online (Sandbox Code Playgroud)
仔细观察返回的内容
Array
(
[1] => Array
(
[name] => Sample Product 1
[type] => line_item
[item_meta] =>
[item_meta_array] => Array
(
[1] => stdClass Object
(
[key] => _qty
[value] => 1
)
[2] => stdClass Object …Run Code Online (Sandbox Code Playgroud)