我已经开始学习如何使用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页面)