Quero adicionar um link personalizado ao link do carrinho

Estou tentando adicionar um link personalizado ao link do carrinho. Estou obtendo detalhes do produto do slug do produto. E tentando adicionar, ADICIONAR ao link do carrinho por identificação do produto. Mas sem sucesso. Qualquer ajuda.

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' ); } 

Solutions Collecting From Web of "Quero adicionar um link personalizado ao link do carrinho"

Seu problema é que get_page_by_path() retorna um object WP_Post , e não um object WC_Product . Você precisa de um object WC_Product , porque esse é o object que contém a propriedade product_type . Você pode obter um WC_Product de um WP_Post através da function 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 ); 

Seu código ainda não funcionará, pois o woocommerce_simple_add_to_cart hook depende da variável global do $product , que não será configurada para o produto que você está consultando aqui. Você poderia configurá-lo você mesmo, mas não tenho certeza dos efeitos colaterais disso. A maneira mais segura na minha opinião seria usar o shortcode [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"]' ); } 

Se você quiser apenas o URL, use o shortcode [add_to_cart_url] :

 echo do_shortcode( '[add_to_cart_url id="' . $product_obj->get_id() . '"]' ); 

Observe também que usei o método get_type() vez da propriedade product_type , uma vez que essa propriedade foi obsoleta em favor do método.

Jacob Peattie @@ Oi, resolvi isso. aqui será resposta

 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 } Add to cart