What have you tried? Are these external products? And which thumbnail – on archives, or on single?
Thread Starter
daz1uk
(@daz1uk)
Hi Mike,
Thanks for the response, yes these are external products. It is on the product page that I wish to link the image to the external product.
I have tried following this:
https://wordpress.org/support/topic/making-product-images-link-out-to-external-affiliate-site?replies=11
In particular, this:
Here’s how I fixed it in Woocommerce version 2.5.2
1. Disable the lightbox, you’ll find this option in Woocommerce -> Settings -> Products Tab -> Display Link -> Very bottom checkbox
2. Edit the product-image.php in \plugins\woocommerce\templates\single-product
Change the line:
$image_link = wp_get_attachment_url( get_post_thumbnail_id() );
to
$image_link = esc_url( $product->get_product_url() );
Save and enjoy.
But maybe I am trying it in the wrong file?
That looks fine.
Have a read here on how to do proper template changes https://docs.woothemes.com/document/template-structure/
Thread Starter
daz1uk
(@daz1uk)
By wrong file, what I mean is I am copying the file product-image.php to the root of my child theme and making the edit there. Maybe it needs to be located elsewhere?
Thread Starter
daz1uk
(@daz1uk)
Hi Mike,
Thanks for your help, it’s still not working though.
I have made the change in product-image.php in /wp-content/themes/MyChildTheme/woocommerce.
Do I need to replicate the woocommerce file structure in my child theme for this to work?
Thread Starter
daz1uk
(@daz1uk)
Sorry, my bad, having read the documentation it now works 😉
Thanks for your help Mike, much appreciated!
For anyone reading this, the woocommerce file structures is replicated minus the templates folder.
I was also looking to do this. I’ve copied the template directory to my theme but the product-image.php file does not have the line of code you mention.
Change the line:
$image_link = wp_get_attachment_url( get_post_thumbnail_id() );
to
$image_link = esc_url( $product->get_product_url() ); Save and enjoy.
Here’s my file code:
<?php
/**
* Single Product Image
*
* This template can be overridden by copying it to yourtheme/woocommerce/single-product/product-image.php.
*
* HOWEVER, on occasion WooCommerce will need to update template files and you
* (the theme developer) will need to copy the new files to your theme to
* maintain compatibility. We try to do this as little as possible, but it does
* happen. When this occurs the version of the template file will be bumped and
* the readme will list any important changes.
*
* @see https://docs.woocommerce.com/document/template-structure/
* @author WooThemes
* @package WooCommerce/Templates
* @version 2.6.3
*/
if ( ! defined( ‘ABSPATH’ ) ) {
exit;
}
global $post, $product;
?>
<div class=”images”>
<?php
if ( has_post_thumbnail() ) {
$attachment_count = count( $product->get_gallery_attachment_ids() );
$gallery = $attachment_count > 0 ? ‘[product-gallery]’ : ”;
$props = wc_get_product_attachment_props( get_post_thumbnail_id(), $post );
$image = get_the_post_thumbnail( $post->ID, apply_filters( ‘single_product_large_thumbnail_size’, ‘shop_single’ ), array(
‘title’ => $props[‘title’],
‘alt’ => $props[‘alt’],
) );
echo apply_filters(
‘woocommerce_single_product_image_html’,
sprintf(
‘%s‘,
esc_url( $props[‘url’] ),
esc_attr( $props[‘caption’] ),
$gallery,
$image
),
$post->ID
);
} else {
echo apply_filters( ‘woocommerce_single_product_image_html’, sprintf( ‘‘, wc_placeholder_img_src(), __( ‘Placeholder’, ‘woocommerce’ ) ), $post->ID );
}
do_action( ‘woocommerce_product_thumbnails’ );
?>
</div>
Anyone know how I should modify this?
Cheers