【问题标题】:WooCommerce main product imageWooCommerce 主要产品图片
【发布时间】:2019-07-31 04:07:51
【问题描述】:

我想对 WooCommerce 默认模板进行简单更改。目前,图库显示在左侧主图像下方。我希望它显示在右侧的简短说明下方。我设法通过将以下代码添加到 functions.php 文件来做到这一点:

/*Relocate Product Gallery*/

remove_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_images', 20 );

add_action( 'woocommerce_before_single_product_summary', 'woocommerce-main-image', 20 );

add_action( 'woocommerce_single_product_summary', 'woocommerce_show_product_thumbnails', 100 ); 

第一行从左侧删除一组图像(主要和图库)。 最后一行正好把画廊放在我想要的地方。 中线是问题。我只希望主要产品图像出现在它应该出现的位置,但它却抛出了一个错误。我是否使用了错误的名称来仅调用主要产品图片?

【问题讨论】:

  • 它抛出了什么错误?我还注意到您的函数回调是用户连字符;我想应该是woocommerce_main_image
  • 感谢您的回复。我更改了下划线的连字符,但结果相同。下面是整个错误消息的屏幕截图。 [屏幕截图错误][1] [1]:webauthorings.com/stack/php_error.jpg

标签: wordpress woocommerce


【解决方案1】:

谢谢!完成。

/*---Move Product Gallery*/

remove_action( 'woocommerce_product_thumbnails', 'woocommerce_show_product_thumbnails', 20  );
add_action( 'woocommerce_single_product_summary', 'woocommerce_show_product_thumbnails', 100 );

【讨论】:

    【解决方案2】:

    简短的回答是没有名为woocommerce_main_image 的函数——您应该改用woocommerce_show_product_images。如果你检查wc-template-hooks.php,你会看到它默认被钩住了:

    add_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_images', 20 );
    

    不清楚的是为什么它还没有显示 - 也许您的模板没有调用 woocommerce_before_single_product_summary 操作。


    您说要与缩略图分开显示主图像;我将为您详细解释它是如何工作的,以便您更好地理解: 看看wc-template-functions.php - 你会发现woocommerce_show_product_images() 通过这一行包含product-image.php 文件:

    // wc-template-functions.php:716
    wc_get_template( 'single-product/product-image.php' ); // Includes product-image.php
    

    这会显示主图像并且有一个显示缩略图的钩子:

    // product-image.php:43
    do_action( 'woocommerce_product_thumbnails' ); // woocommerce_show_product_thumbnails() is hooked to this
    

    您可以create your own copy of product-image.php to override and remove the do_action() 或者您可以使用remove_action() 取消挂钩实际显示缩略图的功能。如果你再次查看wc-template-hooks.php,你会看到:

    // wc-template-hooks.php:108
    // This hooks the function to the action
    add_action( 'woocommerce_product_thumbnails', 'woocommerce_show_product_thumbnails', 20 );
    

    这就是函数与动作挂钩的原因。您可以通过放置...来删除它。

    // This unhooks the function from the action
    remove_action( 'woocommerce_product_thumbnails', 'woocommerce_show_product_thumbnails' );
    

    ... 进入您的主题 functions.php 文件。要在不同位置显示缩略图,您只需在模板中使用woocommerce_show_product_thumbnails() 函数或wc_get_template( 'single-product/product-thumbnails.php' );前者只是后者的包装函数。

    希望这是一个足够清晰的解释,让您能够弄清楚其余部分。祝你好运。

    【讨论】:

    • 您好,Dre,谢谢您的回复。 'woocommerce_show_product_images' 的问题在于它还会显示画廊缩略图行。目标是拆分图像,以便缩略图显示在右侧的简介下方,而主要的单品图像显示在左侧。似乎没有单个变量名仅用于大的单个图像。
    • 我扩展了我上面的答案;您遇到的问题是 is 有一个用于显示主图像的功能,但随后会继续运行另一个显示缩略图的功能。我上面的回答解释了您将如何将这两个函数相互解除挂钩,以便您可以独立运行它们。
    猜你喜欢
    • 1970-01-01
    • 2016-03-27
    • 2012-08-10
    • 2013-07-05
    • 2016-09-10
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    相关资源
    最近更新 更多