我想要添加自定义添加到购物车链接

时间:2017-08-15 作者:sanjay

我正在尝试添加自定义添加到购物车链接。我正在从product slug获取产品详细信息。并试图添加,添加到购物车链接的产品id,但没有运气到目前为止。我们将非常感谢您的帮助。

if(!empty($tracks[ $k ][ \'buy_link_a\' ])){
            list($hash, $slug) = explode("product/",$tracks[ $k ][ \'buy_link_a\' ]);
            $product_obj = get_page_by_path( $slug, OBJECT, \'product\' ); // this code help me to get product detials by slug
           $id=$product_obj->ID; // and here I am getting product id 
           do_action( \'woocommerce_\' . $product->product_type . \'_add_to_cart\'  );
       }

2 个回复
SO网友:Jacob Peattie

你的问题是get_page_by_path() 返回一个WP_Post 对象,不是WC_Product 对象你需要一个WC_Product 对象,因为该对象包含product_type 所有物你可以得到WC_Product 来自WP_Post 通过wc_get_product() 功能:

$post_obj = get_page_by_path( $slug, OBJECT, \'product\' ); // this code help me to get product detials by slug
$product_obj = wc_get_product( $page_obj );
但是,您的代码仍然无法工作,因为woocommerce_simple_add_to_cart 钩子依赖于全球$product 变量,它不会设置为您在此处查询的产品。你可以自己设置,但我不确定它的副作用。在我看来,最安全的方法是使用[add_to_cart] 短代码:

if(!empty($tracks[ $k ][ \'buy_link_a\' ])){
    list($hash, $slug) = explode("product/",$tracks[ $k ][ \'buy_link_a\' ]);
    $post_obj = get_page_by_path( $slug, OBJECT, \'product\' ); // this code help me to get product detials by slug
    $product_obj = wc_get_product( $page_obj );
    echo do_shortcode( \'[add_to_cart id="\' . $product_obj->get_id() . \'" show_price="false"]\' );
}
如果您只需要URL,请使用[add_to_cart_url] 短代码:

echo do_shortcode( \'[add_to_cart_url id="\' . $product_obj->get_id() . \'"]\' );
还请注意,我使用了get_type() 方法而不是product_type 属性,因为该属性已被弃用以支持该方法。

SO网友:web query

请在下面找到您的答案

if(!empty($tracks[ $k ][ \'buy_link_a\' ])){
            list($hash, $slug) = explode("product/",$tracks[ $k ][ \'buy_link_a\' ]);
            $product_obj = get_page_by_path( $slug, OBJECT, \'product\' ); // this code help me to get product detials by slug
           $id=$product_obj->ID; // and here I am getting product id 

       }
<a href="<?php get_bloginfo(\'url\');?>/home-testing/?add-to-cart=<?php $product_obj->ID;?>" class="single_add_to_cart_button button alt">Add to cart</a>

结束