将基于 ACF 字段的自定义“添加到购物车”按钮添加到 WooCommerce 单品页面

Posted

技术标签:

【中文标题】将基于 ACF 字段的自定义“添加到购物车”按钮添加到 WooCommerce 单品页面【英文标题】:Add custom "Add to cart" button based on ACF field to WooCommerce single product page 【发布时间】:2021-02-27 14:48:21 【问题描述】:

我想使用此代码有条件地在单个产品页面上添加一个额外的自定义“添加到购物车按钮”:

add_action( 'woocommerce_product_meta_end' , 'add_to_cart_custom', 10 ); 

function add_to_cart_custom() 

    $mamut = get_field('mamut');
    $stockstatus = get_post_meta( get_the_ID(), '_stock_status', true );
    $id = $product->get_id();
    

    if ($mamut) 
    echo 'Send request';
    
elseif(!$mamut and $stockstatus === 'outofstock')

        echo  'Send request - Mamut';

elseif(!$mamut and $stockstatus === "instock" ) 
        
        echo 'Add to cart';

   


此变量是来自 ACF $mamut = get_field('mamut'); 的字段

但是,当我将此代码放入我的 functions.php 文件时,单个产品页面崩溃

我正在使用主题 29 和 Elementor Pro。

我尝试删除操作,然后添加不同的操作,但它不起作用。我也尝试制作简码并使用 Elementor 输入它们,但随后简码显示为文本。

【问题讨论】:

您使用$product->get_id();$product 未定义 但即使我定义了 $product 它仍然是相同的视图。 【参考方案1】: 您在未定义 $product 时使用 $product->get_id(); 您可以使用$product->get_stock_status(); 代替get_post_meta( get_the_ID(), '_stock_status', true );

所以你得到

function add_to_cart_custom() 
    global $product;
    
    // Is a WC product
    if ( is_a( $product, 'WC_Product' ) ) 
        // Get field - function from ACF plugin, plugin must be actived for this
        $mamut = get_field( 'mamut' );
        
        // Get stock status
        $stock_status = $product->get_stock_status();
        
        // If value exists
        if ( $mamut ) 
            echo 'Send request';
         elseif( ! $mamut && $stock_status === 'outofstock' ) 
            echo 'Send request - Mamut';
         elseif( ! $mamut && $stock_status === 'instock' ) 
            echo 'Add to cart';
        
    

add_action( 'woocommerce_product_meta_end' , 'add_to_cart_custom', 10, 0 ); 

【讨论】:

以上是关于将基于 ACF 字段的自定义“添加到购物车”按钮添加到 WooCommerce 单品页面的主要内容,如果未能解决你的问题,请参考以下文章

基于产品类型的 WooCommerce 的“添加到购物车”按钮旁边的自定义按钮

基于产品类型的 WooCommerce 的“添加到购物车”按钮旁边的自定义按钮

用 WooCommerce 中的自定义数量输入字段替换“添加到购物车”

Woocommerce 添加到自定义产品的购物车按钮

Woocommerce 3 中的自定义加减数量按钮

在“添加到购物车”按钮旁边添加一些图像