在 WooCommerce 存档页面上悬停切换产品图像

Kry*_*hey 4 php wordpress woocommerce hook-woocommerce

有没有办法(也许通过functions.php)在将鼠标悬停在产品的第一个附加图库图像上时更改woocommerce商店(存档页面)中的产品图像?我找不到如何针对两者。我想它一定是这样的:

add_action( 'woocommerce_shop_loop_item', 'change_image_on_hover', 10 );
function change_image_on_hover() {
     $product->get_gallery_image_ids();
     print 'woocommerce_gallery_image';
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

CK *_*eod 7

假设您的安装是某种标准的 WooC 安装,我认为您想要做的是利用循环项操作挂钩添加所需的悬停图像。

add_action( 'woocommerce_before_shop_loop_item_title', 'add_on_hover_shop_loop_image' ) ; 

function add_on_hover_shop_loop_image() {

    $image_id = wc_get_product()->get_gallery_image_ids()[1] ; 

    if ( $image_id ) {

        echo wp_get_attachment_image( $image_id ) ;

    } else {  //assuming not all products have galleries set

        echo wp_get_attachment_image( wc_get_product()->get_image_id() ) ; 

    }

}
Run Code Online (Sandbox Code Playgroud)

初步的CSS:

/* CUSTOM ON-HOVER IMAGE */
.woocommerce ul.products li.product a img { 
    /* FORMAT ALL IMAGES TO FILL EQUIVALENT SPACE,
    to remove jitter on replacement */
    height: 150px;
    width: 150px;
    object-fit: cover;
    padding: 0;
    margin: 0 auto;
}
.woocommerce ul.products li.product a img:nth-of-type(2) {
    display: none;
}
.woocommerce ul.products li.product a:hover img:nth-of-type(2) {
    display: block
}
.woocommerce ul.products li.product a:hover img:nth-of-type(1) {
    display: none;
}
Run Code Online (Sandbox Code Playgroud)

以上将获得您想要的一种类型的商店存档显示,以实现简单的替换,但是您可能需要或想要为您的站点定制许多细节。例如,150x150px 可能不适合您的主题。或者您可能决定需要用不同的集合完全替换默认图像,并且为了获得特定的过渡效果,或者为了与您网站上使用的其他效果保持一致,您需要一种不同的 CSS 方法,可能还需要到javascript。

  • 要获取第一个图库图像,我认为应该是: get_gallery_image_ids()[0] (3认同)
  • 当然 - wp_get_attachment_image() 默认为“缩略图”。如果您的主题将 600x600 alreqady 注册为图像尺寸(“中”?、“大”?),则只需将其添加为第二个参数即可。或尝试 'array( '600', '600' ) (并适当调整 CSS) - 更多示例请参见 https://developer.wordpress.org/reference/functions/wp_get_attachment_image/ (2认同)
  • 我认为 [0] 图像是特色图像...但自从我回答这个问题以来已经有一段时间了。如果您还没有这样做,我稍后会仔细检查。 (2认同)