在 Woocommerce 中的functions.php 文件中显示“添加到购物车”按钮的价格[已关闭]

问题描述 投票:0回答:3

一直在尝试寻找与此相关的内容,但到目前为止我在这里找到的解决方案不起作用。

我需要在单个产品页面中显示添加到购物车按钮,如下所示:

添加到购物车 - 只需$价格

需要从子主题中的functions.php文件完成。

非常感谢!

php wordpress woocommerce
3个回答
4
投票

要处理商店、其他档案页面和单个产品页面上所有产品价格的添加到购物车按钮中的产品价格显示,无需覆盖模板,使用专用的 Woocommerce 过滤器挂钩:

add_filter( 'woocommerce_product_add_to_cart_text', 'custom_add_to_cart_price', 20, 2 ); // Shop and other archives pages
add_filter( 'woocommerce_product_single_add_to_cart_text', 'custom_add_to_cart_price', 20, 2 ); // Single product pages
function custom_add_to_cart_price( $button_text, $product ) {
    // Variable products
    if( $product->is_type('variable') ) {
        // shop and archives
        if( ! is_product() ){
            $product_price = wc_price( wc_get_price_to_display( $product, array( 'price' => $product->get_variation_price() ) ) );
            return $button_text . ' - From ' . strip_tags( $product_price );
        } 
        // Single product pages
        else {
            return $button_text;
        }
    } 
    // All other product types
    else {
        $product_price = wc_price( wc_get_price_to_display( $product ) );
        return $button_text . ' - Just ' . strip_tags( $product_price );
    }
}

代码位于活动子主题(或活动主题)的 function.php 文件中。已测试并有效。


在商店页面:

在单个产品页面上:


2
投票

我建议您覆盖子主题中的 WooCommerce 模板,文件名是 add-to-cart.php,可以在 woocommerce > Loop 中找到。

在底部添加以下代码,仅在产品单中显示。

if (is_single()) {
    echo sprintf(
        '<span>%s %s</span>',
        esc_attr__('JUST', 'woocommerce'),
        esc_attr($product->price)
    );
}

0
投票

像这样编辑您的

woocommerce/loop/add-to-cart.php
模板文件:

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

global $product;

echo apply_filters( 'woocommerce_loop_add_to_cart_link', // WPCS: XSS ok.
    sprintf( '<a href="%s" data-quantity="%s" class="%s" %s>ADD TO CART - JUST %s</a>',
        esc_url( $product->add_to_cart_url() ),
        esc_attr( isset( $args['quantity'] ) ? $args['quantity'] : 1 ),
        esc_attr( isset( $args['class'] ) ? $args['class'] : 'button' ),
        isset( $args['attributes'] ) ? wc_implode_html_attributes( $args['attributes'] ) : '',
        $product->get_price()
    ),
$product, $args );

对于单品页面做的基本相同:

woocommerce/single-product/add-to-cart/simple.php

以及您在添加到购物车目录中使用的任何其他模板。

注意:不要编辑插件文件本身,而是覆盖(子)主题中的模板,这样当插件更新时它就不会被覆盖。

© www.soinside.com 2019 - 2024. All rights reserved.