我已经开始学习如何使用 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
钩子中看到的那样,您已将所有不同的模板按顺序排列在该@hooked
中,并使用do_action()
WordPress功能:
do_action( 'woocommerce_single_product_summary' );
因此,在您的自定义代码(第二个代码片段)中,您刚刚将hook
替换为 hook 模板 slug (即 NOT 钩子) 并且将 NOT 作为入口点 动作挂钩。请参阅本答案底部的参考资料,了解 WooCommerce 操作和过滤器列表现有挂钩…
后果:有关模板中使用的挂钩说明注释列表代码中的所有其他挂钩模板(以 @hooked 开头)都将丢失 如果您用模板 slug 替换钩子。
您想要
在woocommerce_template_single_title
钩子中自定义
woocommerce_single_product_summary
钩子模板。
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
(子文件夹)...最后没那么复杂,一旦我们了解了模板结构文件和该模板中的挂钩。
优先级数字,给出了挂钩模板的顺序:首先较小,最后较大...... 另请参阅:
Wordpress 和 Woocommerce 中的 Hook 及其挂钩函数执行队列其他方式:您还可以使用所有现有模板挂钩使用来针对非常具体的更改或自定义,自定义函数也位于活动子主题(或主题)的
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
…之间 此挂钩的此挂钩函数的可选参数
:
• 模板段(字符串)
。
• 优先级(int)
。