Evitar la imagen en la que se puede hacer clic en la página del producto, deshabilitar el enlace de la imagen del producto

2 minutos de lectura

avatar de usuario
Luis

Con Woocommerce y mi tema secundario Storefront, estoy tratando de evitar el hecho de que al hacer clic en una imagen de un solo producto, se abre una nueva página con la imagen de tamaño completo.

Quiero que no se pueda hacer clic en la imagen para que no suceda nada si el usuario hace clic en la imagen en la página del producto.

En mi child-theme functions.php, el siguiente código impide hacer zoom y abrir la imagen en una caja de luz, pero quiero desactivar por completo la vinculación.

add_action( 'after_setup_theme', 'remove_hemen_theme_support', 100 );
function remove_hemen_theme_support() {
    remove_theme_support( 'wc-product-gallery-zoom' );
    remove_theme_support( 'wc-product-gallery-lightbox' );
}

¿Cómo puedo conseguir esto?

Agregue este filtro, debería eliminar su hipervínculo

function e12_remove_product_image_link( $html, $post_id ) {
    return preg_replace( "!<(a|/a).*?>!", '', $html );
}
add_filter( 'woocommerce_single_product_image_thumbnail_html', 'e12_remove_product_image_link', 10, 2 );

  • Perfecto: probado y funcionando en WooCommerce 5.3.0. Gracias 🙂

    – NuclearApe

    7 jun 2021 a las 21:38


puede sobrescribir la plantilla woocommerce/single-product/product-thumbnails.php en su tema.

ejecuta el:

apply_filters(
    'woocommerce_single_product_image_thumbnail_html',
    sprintf(
      '<a href="%s" class="%s" title="%s" data-rel="prettyPhoto[product-gallery]">%s</a>',
      esc_url( $props['url'] ),
      esc_attr( $image_class ),
      esc_attr( $props['caption'] ),
      wp_get_attachment_image( $attachment_id, apply_filters( 'single_product_small_thumbnail_size', 'shop_thumbnail' ), 0, $props )
    ),
    $attachment_id,
    $post->ID,
    esc_attr( $image_class )
);

Como lo hice con el mismo tema.

Creé un complemento simple (pero puedes usar functions.php) con las funciones que necesito para anular el tema y dentro tengo este código:

add_action( 'wp', 'ts_remove_zoom_lightbox_gallery_support', 99 );

function ts_remove_zoom_lightbox_gallery_support() {
     remove_theme_support( 'wc-product-gallery-zoom' ); 
     remove_theme_support( 'wc-product-gallery-lightbox' );
 }

La diferencia entre nuestra función es que estoy usando “wp” en lugar de “after_setup_theme”.

Pruébalo y hazme saber si funciona.

¿Ha sido útil esta solución?