PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Monday, November 14, 2022

[FIXED] How to link external products on the Shop page to the Product page in WooCommerce for specific product categories ONLY

 November 14, 2022     external, php, product, woocommerce, wordpress     No comments   

Issue

Hi Everyone.

So i have found this code shown below: (credit to https://www.tychesoftwares.com/how-to-link-external-products-on-the-shop-page-to-the-product-page-in-woocommerce/)

The quesion i need help with is how to modify this code so it only works on certain product categories, at the moment the code is applied to all products sitewide.

add_filter( 'woocommerce_loop_add_to_cart_link', 'ts_link_external_product_page', 16, 3 );
function ts_link_external_product_page( $button, $product, $args ) {
  $url = $product->add_to_cart_url();
  $button_text = $product->add_to_cart_text();
  if ( 'external' === $product->get_type() ) {
    $url = $product->get_permalink();
    $button_text = "View Details";
  }
  return sprintf( '<a href="%s" data-quantity="%s" class="%s" %s>%s</a>',
    esc_url($url),
    esc_attr( isset( $args['quantity'] ) ? $args['quantity'] : 1 ),
    esc_attr( isset( $args['class'] ) ? $args['class'] : 'button' ),
    isset( $args['attributes'] ) ? wc_implode_html_attributes( $args['attributes'] ) : '',
    esc_html( $button_text)
  );
}

 

I feel like i need to add a line like "if(is_product_category( array( 'catslugurl', 'anothercatslugurl' ) )){" but can not seem to be able to get it to work.

Any help with this would be great. Thank you so much :)

I feel like i need to add a line like "if(is_product_category( array( 'catslugurl', 'anothercatslugurl' ) )){" but can not seem to be able to get it to work.


Solution

Try this:

add_filter( 'woocommerce_loop_add_to_cart_link', 'ts_link_external_product_page', 16, 3 );

function ts_link_external_product_page( $button, $product, $args ) {
    $url         = $product->add_to_cart_url();
    $button_text = $product->add_to_cart_text();
    $categories  = array( 'music', 'clothes' ); //Your specific categories 
    $product_id  = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;
    if ( has_term( $categories, 'product_cat', $product_id ) && 'external' === $product->get_type() ) {
            $url         = $product->get_permalink();
            $button_text = 'View Details';

    }
    return sprintf(
        '<a href="%s" data-quantity="%s" class="%s" %s>%s</a>',
        esc_url( $url ),
        esc_attr( isset( $args['quantity'] ) ? $args['quantity'] : 1 ),
        esc_attr( isset( $args['class'] ) ? $args['class'] : 'button' ),
        isset( $args['attributes'] ) ? wc_implode_html_attributes( $args['attributes'] ) : '',
        esc_html( $button_text )
    );
}


Answered By - Krunal Bhimajiyani
Answer Checked By - Marilyn (PHPFixing Volunteer)
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing