我已经开始学习如何使用WooCommerce创建模板,我遇到了一个小问题。例如,在php文件内容单一的产品。Woocommerce插件的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' );
?>
例如,当我想要编辑此内容(删除一些字段并更改结构)时,我会尝试删除字符串:
执行行动(“WOOMerce\u single\u product\u 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函数一起:
do_action( 'woocommerce_single_product_summary' );
因此,在您的定制代码(第二个代码段)中,您刚刚用钩子模板slug(不是钩子)替换了钩子,并且不能作为入口点操作钩子使用。有关WooCommerce操作和过滤器现有挂钩的列表,请参阅此答案底部的参考资料…
后果:如果您用模板段塞替换一个钩子,注释列表代码中所有其他钩子模板(以@钩子开头)都将丢失。
有关模板中使用的钩子,请参阅此有用的可视钩子指南
如何-具体的例子:
您要在woocommerce\u single\u product\u summary
hook中自定义woocommerce\u template\u single\u title
hook模板。
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
位于单品
(子文件夹)...最后并不复杂,一旦我们了解了模板结构文件和模板中的钩子。
优先级数字,给出了挂接模板的顺序:先小,后大...
另请参见Wordpress和Woocommerce中的钩子及其钩子函数执行队列
您还可以使用所有现有模板挂钩来针对非常特定的更改或自定义,自定义函数位于函数中。php
活动子主题(或主题)的文件或任何插件文件。
使用add\u 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
,将在产品价格
和产品简短描述
之间显示“这是我的自定义操作函数”字符串文本…
此钩子的此钩子函数的可选参数:
•模板slug(字符串)
•优先级(int)。
参考文献: