从插件覆盖WooCommerce产品库的正确方法

时间:2018-04-09 作者:Marvin3

WooCommerce产品页面附近有图像和缩略图。

我正在制作一个覆盖主图像、缩略图和lightbox的插件(所以我不需要任何内置类)。

我的问题是:从插件中执行此操作的正确方法是什么?

目前我看到两种方法:

1) 覆盖product-image.php 通过过滤器的模板文件。但我不完全理解它是否适用于主图像或缩略图,或两者兼而有之。

add_filter( \'wc_get_template\', \'modify_product_gallery_template\', 10, 5 );
function modify_product_gallery_template( $located, $template_name, $args, $template_path, $default_path ) {

    if ( \'single-product/product-image.php\' == $template_name ) {
        $located = \'... my-gallery.include.php\';
    }

    return $located;
}
2)删除操作以应用我自己的操作:

remove_action( \'woocommerce_product_thumbnails\', \'woocommerce_show_product_thumbnails\', 20 );
remove_action( \'woocommerce_before_single_product_summary\', \'woocommerce_show_product_images\', 20 );

add_action( \'woocommerce_product_thumbnails\', \'my_plugin_show_product_image\', 20 );
add_action( \'woocommerce_before_single_product_summary\', \'my_plugin_show_product_image\', 10 ); 
最好的方法是什么?

1 个回复
最合适的回答,由SO网友:Mike Jolley 整理而成

如果您想用自定义内容替换所有图像标记,最好的选择是#2-这样您的新插件就可以控制与库相关的所有内容,并且WooCommerce中任何未来的模板覆盖都不会直接影响它。

如果只是要删除的默认lightbox,那么实际上不需要更改标记或删除CSS类;您只需取消激活该功能即可。此处解释如下:https://github.com/woocommerce/woocommerce/wiki/Enabling-product-gallery-features-(zoom,-swipe,-lightbox)

结束

相关推荐

Testing hooks callback

我正在开发一个使用TDD的插件,有一件事我完全没有测试出来,那就是。。。挂钩。我的意思是好的,我可以测试钩子回调,但我如何测试钩子是否真的触发了(自定义钩子和WordPress默认钩子)?我认为一些嘲弄会有所帮助,但我就是想不出我错过了什么。我用WP-CLI安装了测试套件。根据this answer, init 钩子应该触发,但。。。事实并非如此;此外,该代码在WordPress内部工作。根据我的理解,引导程序是最后加载的,所以不触发init是有意义的,所以剩下的问题是:如果触发了挂钩,我该如何测试?谢谢