ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php-在Woocommerce购物车小部件中显示购物车项目计数

2019-10-13 05:32:48  阅读:245  来源: 互联网

标签:cart php wordpress woocommerce hook-woocommerce


我试图在Woocommerce购物车小部件的底部或顶部显示购物车中物品的数量.似乎默认情况下,在侧栏中时,购物车小部件不会执行此操作.

我研究了SO,发现了以下answer,但添加单个小计的目标略有不同.我尝试通过传递WC()-> cart-> get_cart_contents_count()而不是WC()-> cart-> get_cart()来进行修改,以查看是否可以获取购物车商品计数,但是没有显示…任何建议?

我尝试做的例子:

Annotated screenshot

我从批准的答案中修改了代码:

<?php
/**
 * Mini-cart
 *
 * Contains the markup for the mini-cart, used by the cart widget
 *
 * @author      WooThemes
 * @package     WooCommerce/Templates
 * @version     2.1.0
 */

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
?>

<?php do_action( 'woocommerce_before_mini_cart' ); ?>

<ul class="cart_list product_list_widget <?php echo $args['list_class']; ?>">

    <?php if ( WC()->cart->get_cart_contents_count() ) > 0 ) : ?>

        <?php
            foreach ( WC()->cart->get_cart_contents_count() as $cart_item_key => $cart_item ) {
                $_product     = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
                $product_id   = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );

                if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_widget_cart_item_visible', true, $cart_item, $cart_item_key ) ) {

                    $product_name  = apply_filters( 'woocommerce_cart_item_name', $_product->get_title(), $cart_item, $cart_item_key );
                    $thumbnail     = apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key );
                    $product_price = apply_filters( 'woocommerce_cart_item_price', WC()->cart->get_product_price( $_product ), $cart_item, $cart_item_key );
                    echo "<p>".$product_price."</p>";
                    ?>
                    <li>
                    <?php if ( ! $_product->is_visible() ) { ?>
                        <?php echo str_replace( array( 'http:', 'https:' ), '', $thumbnail ) . $product_name; ?>
                    <?php } else { ?>
                        <a href="<?php echo get_permalink( $product_id ); ?>">
                            <?php echo str_replace( array( 'http:', 'https:' ), '', $thumbnail ) . $product_name; ?>
                        </a>
                    <?php } ?>
                        <?php echo WC()->cart->get_item_data( $cart_item ); ?>
                        <?php   $new_product_price_array = explode ( get_woocommerce_currency_symbol(), $product_price); 
                                $new_product_price = number_format((float)$new_product_price_array[1] * $cart_item['quantity'], 2, '.', '');

                        ?>
                        <?php echo apply_filters( 'woocommerce_widget_cart_item_quantity', '<span class="quantity">' . sprintf( '%s &times; %s=%s%s', $cart_item['quantity'], $product_price,get_woocommerce_currency_symbol(), $new_product_price ) . '</span>', $cart_item, $cart_item_key ); ?>
                    </li>
                    <?php
                }
            }
        ?>

    <?php else : ?>

        <li class="empty"><?php _e( 'No products in the cart.', 'woocommerce' ); ?></li>

    <?php endif; ?>

</ul><!-- end product list -->

<?php if ( WC()->cart->get_cart_contents_count() ) > 0 ) : ?>

    <p class="total"><strong><?php _e( 'Subtotal', 'woocommerce' ); ?>:</strong> <?php echo WC()->cart->get_cart_subtotal(); ?></p>

    <?php do_action( 'woocommerce_widget_shopping_cart_before_buttons' ); ?>

    <p class="buttons">
        <a href="<?php echo WC()->cart->get_cart_url(); ?>" class="button wc-forward"><?php _e( 'View Cart', 'woocommerce' ); ?></a>
        <a href="<?php echo WC()->cart->get_checkout_url(); ?>" class="button checkout wc-forward"><?php _e( 'Checkout', 'woocommerce' ); ?></a>
    </p>

<?php endif; ?>

<?php do_action( 'woocommerce_after_mini_cart' ); ?>

解决方法:

如果要在迷你购物车小部件中显示购物车项目计数,可以使用挂钩:

1)在微型车内容之前:

add_action( 'woocommerce_before_mini_cart', 'minicart_count_after_content' );
function minicart_count_after_content() {
    $items_count = WC()->cart->get_cart_contents_count();
    $text_label  = _n( 'Item', 'Items', $items_count, 'woocommerce' );
    ?>
        <p class="total item-count"><strong><?php echo $text_label; ?>:</strong> <?php echo $items_count; ?></p>
    <?php
}

2)在按钮下方的底部:

add_action( 'woocommerce_widget_shopping_cart_before_buttons', 'minicart_count_before_content' );
function minicart_count_before_content() {
    $items_count = WC()->cart->get_cart_contents_count();
    $text_label  = _n( 'Item', 'Items', $items_count, 'woocommerce' );
    ?>
        <p class="total item-count"><strong><?php echo $text_label; ?>:</strong> <?php echo $items_count; ?></p>
    <?php
}

代码进入您的活动子主题(或活动主题)的function.php文件中.经过测试和工作.

WC() – &GT cart-&GT get_cart_contents_count();将为您提供总项目数,包括数量.

如果要获取购物车中的物品数,请改用:

$items_count = sizeof( WC()->cart->get_cart() );

标签:cart,php,wordpress,woocommerce,hook-woocommerce
来源: https://codeday.me/bug/20191013/1905597.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有