在产品页面上获取变体ID和属性值

时间:2014-11-07 07:08:24

标签: wordpress woocommerce checkout product cart

我希望在产品页面上有一个Quick Buy(Flipkart like)按钮。单击此按钮可将所选产品添加到购物车并让用户进入结帐(不在购物车页面上)。另请注意,用户不会被重定向到购物车页面,并尽可能在结帐过程中引导用户。我也不想替换默认的“添加到购物车”按钮,相反,我想添加另一个说Quickbuy的按钮。你能帮我解决这个问题吗?

到目前为止我想到了什么? 好吧,我已经尝试并创建了一个URL结构,将产品添加到购物车并转到结帐,就像这样。

https://www.similarfeathers.com/checkout/?add-to-cart=6711&variation_id=6714&attribute_pa_size=M

Custom Attribute from the Drop Down

(6711是产品ID,6714是变量ID,M是那个大小(属性))。 现在,我想添加这个在产品页面上动态生成的超链接,从下拉列表中获取size属性的值并获取variationID。当用户点击此URL时,我的工作将完成。

如何在产品页面上创建自定义超链接URL?

3 个答案:

答案 0 :(得分:3)

制作您要查找的链接所需的所有数据都可以在隐藏字段形式的单页面上获得。

<input type="hidden" value="6438" name="add-to-cart"> <input type="hidden" value="6438" name="product_id"> <input type="hidden" value="6442" name="variation_id">

可以从选择框中抓取attribute_pa_size的值。

您需要添加快速购买按钮,并在其点击事件中编写一些代码来制作网址并重定向到它。

一些快速编写的代码假定您使用id="quick-buy"

创建按钮
<script>
jQuery( document ).ready( function() {

    jQuery( "#quick-buy" ).click( function() {

        // Get all the values needed for the URL
        var add_to_cart = jQuery( 'input[name="add-to-cart"]' ).val();
        var variation_id = jQuery( 'input[name="variation_id"]' ).val();    
        var pa_size = jQuery( "#pa_size" ).val();

        // Craft the URL
        var link = "https://www.similarfeathers.com/checkout/?add-to-cart=" + add_to_cart + "&variation_id=" + variation_id + "&attribute_pa_size=" + pa_size

        // Finally redirect to the URL
        window.location.href= link;

        return false;

    });
});
</script>

答案 1 :(得分:1)

全球$ product;

    $args = array(
                 'post_type'     => 'product_variation',
                 'post_status'   => array( 'private', 'publish' ),
                 'numberposts'   => -1,
                 'orderby'       => 'menu_order',
                 'order'         => 'asc',
                 'post_parent'   => $product->id
             );
             $variations = get_posts( $args ); 

    foreach ( $variations as $variation ) {


                echo  $variation_id           = absint( $variation->ID );$variable_id = $this['variation_id'];
                 $variation_post_status  = esc_attr( $variation->post_status );

                 $variation_data         = get_post_meta( $variation_id );
                 $variation_data['variation_post_id'] = $variation_id;

             echo get_post_meta( $variation_data['variation_post_id'], 'variable_regular_price[]', true) . '<br>';



                echo $id = $product->id.'<br>';
                 echo $price =get_post_meta($variation_id, '_regular_price', true).'<br>';
                 //echo $variation['image_src'];

             }

答案 2 :(得分:0)

经过长时间的搜索,我想出了这个解决方案。它可能不是最好的方式,但它的工作原理和简单。您可以使用Javascript快速购买产品变种......

首先,我在添加到购物车按钮旁边添加了一个辅助按钮 即时购买

我使用了所有Woocommerce标准的隐藏输入。 <input type="hidden" name="variation_id" id="variation_num" class="variation_id" value="15959">

我将ID(id =&#34; variation_num&#34;)添加到输入中,该输入位于/ wp-content / themes /您的主题/ woocommerce /单品/添加到购物车/变体 - add-to-cart.php

然后在这个相同的变体-add-to-cart.php文件的底部,我添加了我的javascript。首先使用我们刚刚添加的id获取隐藏输入的值(var sel = document.getElementById(&#39; variation_num&#39;);)

如果您默认选择了一个选项,则需要在页面加载时选择隐藏的输入值,并通过ID更新您的链接网址(快速购买)

sel.onload = function()
  { document.getElementById("quick-buy").href = "/checkout/?add-to-cart=" + this.value;}

接下来,当选择或更改选项时,您需要一个更新网址的功能......

sel.onchange = function () { document.getElementById("quick-buy").href = "/checkout/?add-to-cart=" + this.value;}

所以总的来说你会得到以下......

<a href="/checkout/" id="quick-buy" class="instant-buy">Instant Buy</a>

<script>
var sel = document.getElementById('variation_num');

sel.onload = function()
  { document.getElementById("quick-buy").href = "/checkout/?add-to-cart=" + this.value;}

sel.onchange = function () { document.getElementById("quick-buy").href = "/checkout/?add-to-cart=" + this.value;}
</script>

瓦剌!我希望这可以节省其他人浪费时间寻找更复杂的解决方案。

对于简单的产品,您还需要编辑.. / wp-content / themes /你的主题/ woocommerce /单品/ add-to-cart / simple.php

添加新链接/按钮,我使用与变体产品相同的内容。至于我使用php的网址。

global $wpdb; //connect to WP database (may not be necessary)
global $product; //get product data (may not be necessary)
$pID = $product->id; //get current product id

您的按钮:

<a href="/checkout/?add-to-cart=<?php echo $pID?>" class="instant-buy">Instant Buy</a>