Woocommerce 中的自定义产品模板和操作挂钩

Custom product template and action hooks in Woocommerce

我有一个来自 Storefront 的子主题,并且主页和其他页面的自定义页面模板 运行 没有问题。

我正在为 Woocommerce 页面构建自定义布局,并将 content-single-product.php 用于文件中带有自定义代码的单个产品页面,例如:

<div class="wc-product-images">
    <?php do_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_images'); ?>
</div>

<div class="wc-product-description">
    <?php the_content(); ?>     
</div>

问题 1:我在模板文件中用 do_action() 调用 Woocommerce 内容是否正确?我有一个特定的布局,无法按照默认文件遵循挂钩布局

问题2:当我调用:

<?php 
    do_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products' );
?>

我获得了相关产品的产品描述,实际上需要构建一个仅包含相关产品的 div。

如果没有包含描述,如何正确调用它?

感谢任何帮助。

你在制造混淆,原来 do_action( 'woocommerce_before_single_product_summary' ) 在 woocommerce content-single-product.php 模板中启用了一个入口点,其中 add_action() 用于使用函数挂钩其他模板:

  • woocommerce_show_product_sale_flash() (钩子优先级为 10)
  • woocommerce_show_product_images() (钩子优先级为 20)

因此,如果您只想在自定义模板中启用产品图片,则必须创建自己的挂钩:

<div class="wc-product-images">
    <?php do_action( 'woocommerce_before_single_product_summary_custom' ); ?>
</div>

<div class="wc-product-description">
    <?php the_content(); ?>     
</div>

然后您将在您的活动子主题 (或活动主题)的 function.php 文件中添加此内容:

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

它应该按预期工作。


但是您可以在您的自定义模板中使用原始挂钩,如果您不需要任何不同的挂钩自定义…在那种情况下您将只有那个:

<div class="wc-product-images">
    <?php do_action( 'woocommerce_before_single_product_summary' ); ?>
</div>

<div class="wc-product-description">
    <?php the_content(); ?>     
</div>

附加项:与您的评论相关(关于相关产品)。

要在自定义模板中启用相关产品,请在其中添加此块(使用自定义挂钩):

<div class="wc-product-related">
    <?php do_action( 'custom_after_single_product_summary' ); ?>
</div>

然后您将在您的活动子主题(或活动主题)的 function.php 文件中添加:

add_action( 'custom_after_single_product_summary', 'woocommerce_output_related_products', 20 );

应该可以。