更改添加到购物车按钮链接

时间:2013-06-25 作者:drexsien

我是WordPress和WooCommerce插件的新手。我正在创建一个插件来更改添加到购物车按钮链接,如果它达到所需的库存量。

例如,如果库存数量超过50,我想更改特殊付款链接。

我在互联网上搜索了几个小时,没有找到解决方案或想法<有可能吗?你能告诉我如何开始和实施它吗。

3 个回复
SO网友:Faison Zutavern

老实说,我今天才知道怎么做。

为了实现您的目标,您需要连接到中的一个url过滤器woocommerce/templates/loop/add-to-cart.php 之间lines 30 - 53, 利用全球$product 变量,以及get_stock_quantity 作用

假设你只担心简单的产品(没有变化),那么我相信你会这样处理:

add_filter( \'add_to_cart_url\', \'add_special_payment_link\' );

function add_special_payment_link( $link ) {
    global $product;

    // If the stock quantity is less than 50, don\'t modify the link
    if( $product->get_stock_quantity() <= 50 ) {
        return $link;
    }

    // Write your code here to come up with the special payment link
    $link = \'http://wordpress.org/\';  // You know, your link, not WordPress

    return $link;
}

// Since WooCommerce\'s JavaScript uses AJAX to add an item to a cart, we need to remove
// the class \'add_to_cart_button\' from the button when the stock is greater than 50
add_filter( \'add_to_cart_class\', \'remove_add_to_cart_class\' );

function remove_add_to_cart_class( $class ) {
    global $product;

    // If the stock quantity is less than 50, don\'t modify the class
    if( $product->get_stock_quantity() <= 50 ) {
        return $class;
    }

    // Specify a custom class or just return an empty string
    return \'\';
}
现在我还没有测试这段代码(所以只在测试站点上使用),但考虑到我今天早些时候所做的,并假设get_stock_quantity 函数实际上可以工作,该代码至少应该给您一个良好的开端。

告诉我进展如何,或者你有什么问题要问我。

SO网友:drexsien

经过几个小时的研究,我发现了一个有点奇怪的解决方案,但不知怎么的,它还是有效的。我使用了woocommerce\\u is\\u可购买挂钩。它传递2个参数is_purchasableobject (WC_Product) 我现在可以得到该产品的总库存数量。

这就是我所做的。

function order_is_purchasable($is_purchasable, $object) {
    if($object->get_total_stock() > 50){
        echo \'<a style="margin-bottom: 10px;" href="" class="button">Call to purchase</a>\';
        return false;
    }else{
        return true;
    }
}

add_filter(\'woocommerce_is_purchasable\', \'order_is_purchasable\', 10, 2);
echo显示链接到我想要的特殊付款页面的按钮。

SO网友:helgatheviking

这与我以我的名字修改“添加到购物车”URL的方式类似,您的价格插件。。。我几乎完全是从MikeJolley的一个高级插件中复制的。

add_filter( \'add_to_cart_url\', \'wpa104168_tadd_special_payment_link\' );

function wpa104168_tadd_special_payment_link( $link ) {
    global $product;

    // If the stock quantity is greater than 50, modify the link
    if( $product->get_stock_quantity() > 50 ) {
        $link = \'http://wordpress.org/\';  
        $product->product_type = \'modified\';  
    }

    return $link;
}
临时更改product_type 将禁用Ajax添加到购物车功能。

结束