WooCommerce动作挂钩和覆盖模板



我已经开始学习如何使用WooCommerce创建模板,我遇到了一个小问题。例如,在Woocommerce插件的php文件content-single-product.php中,我有这样的字符串:

     <?php
        /**
         * woocommerce_single_product_summary hook.
         *
         * @hooked woocommerce_template_single_title - 5
         * @hooked woocommerce_template_single_rating - 10
         * @hooked woocommerce_template_single_price - 10
         * @hooked woocommerce_template_single_excerpt - 20
         * @hooked woocommerce_template_single_add_to_cart - 30
         * @hooked woocommerce_template_single_meta - 40
         * @hooked woocommerce_template_single_sharing - 50
         */
        do_action( 'woocommerce_single_product_summary' );
    ?>

例如,当我想编辑这个(删除一些字段和改变结构),我试着擦除字符串:

do_action('woocommerce_single_product_summary');

,然后像这样写:

<?php
        /**
         * woocommerce_single_product_summary hook.
         *
         * @hooked woocommerce_template_single_title - 5
         * @hooked woocommerce_template_single_rating - 10
         * @hooked woocommerce_template_single_price - 10
         * @hooked woocommerce_template_single_excerpt - 20
         * @hooked woocommerce_template_single_add_to_cart - 30
         * @hooked woocommerce_template_single_meta - 40
         * @hooked woocommerce_template_single_sharing - 50
         */
        //do_action( 'woocommerce_single_product_summary' );
        do_action('woocommerce_template_single_title');
    ?>

你能告诉我为什么这不起作用吗?

这样的编辑方法是什么?

谢谢

首先在参考中,您将发现如何通过主题(避免编辑插件模板)正确覆盖woocommerce模板

在你的第一个代码片段中,你可以看到 woocommerce_single_product_summary钩子,你在这个钩子位置 do_action() WordPress函数

中按顺序列出了所有不同的模板 @hooked
do_action( 'woocommerce_single_product_summary' ); 
因此,在您的自定义代码(第二个代码片段)中,您刚刚将钩子替换为钩模板段(即NOT钩子),并将NOT作为入口点操作钩子。关于WooCommerce动作和过滤器现有钩子… 的列表,请参阅本答案底部的参考资料。

后果:如果用模板段符替换钩子,则注释列表代码中所有其他钩子模板(以@hooked开头)都将丢失

关于模板中使用的钩子,请参阅这个有用的WooCommerce可视化钩子指南


说明(How to):

HOW TO -具体示例:

希望 woocommerce_single_product_summary hook中自定义woocommerce_template_single_title钩子模板

 THE HOOK NAME:  woocommerce_single_product_summary hook.
   
 THE TEMPLATES HOOKED (+priority order number)  => corresponding template file name:    
— woocommerce_template_single_title       (5) => single-product/title.php
— woocommerce_template_single_rating     (10) => single-product/rating.php
— woocommerce_template_single_price      (10) => single-product/price.php
— woocommerce_template_single_excerpt    (20) => single-product/short-description.php
— woocommerce_template_single_add_to_cart(30) => single-product/add-to-cart/ (6 files depending on product type)
— woocommerce_template_single_meta       (40) => single-product/review-meta.php
— woocommerce_template_single_sharing -  (50) => single-product/share.php

然后你需要编辑对应的 woocommerce_single_product_summary钩子 title.php 位于 single-product (子文件夹).最后不是那么复杂,一旦我们了解了模板结构文件和模板中的钩子。

优先级编号,给出了钩模板的顺序:先小后大…

参见:Hooks及其钩子函数在Wordpress和Woocommerce中的执行队列


其他方式:

您还可以使用所有现有的模板钩子来针对非常具体的更改或自定义,自定义函数位于 function.php 文件的活动子主题(或主题)或任何插件文件太。

使用add_action() WordPress函数的例子:

// define the woocommerce_single_product_summary callback function
function my_custom_action() { 
    echo '<p>This is my custom action function</p>';
};     
add_action( 'woocommerce_single_product_summary', 'my_custom_action', 15 ); 

该函数的优先级号为 15 ,将显示这是我的自定义动作函数字符串文本,介于 product price product short description

钩子函数的可选参数
•模板段符(string)
•优先级(int)


引用:

  • 模板结构&通过主题
  • 重写模板WooCommerce Hooks: Actions and filters
  • WooCommerce Code - Action and Filter Hook Reference
  • WooCommerce可视化钩子指南(适用于所有WooCommerce页面)

相关内容

  • 没有找到相关文章

最新更新