我是WooCommerce的新手。无论如何,我想创建自己的主题,所以我遵循指南并将核心模板文件复制到 / mywordpresstheme / woocommerce / 。
一切都很好,我正在编辑模板。
然而,WooCommerce中钩子和动作的工作方式令我感到困惑,我无法确定生成的HTML的某些部分来自何处。
例如,在content-product.php
中,有一个获取图像的钩子:
<?php
/*
* woocommerce_before_shop_loop_item_title hook
*
* @hooked woocommerce_show_product_loop_sale_flash - 10
* @hooked woocommerce_template_loop_product_thumbnail - 10
*/
do_action( 'woocommerce_before_shop_loop_item_title' );
?>
但这是什么?它从何而来??动作名称中是否有任何线索可以找到为编辑目的而生成的HTML?
我已经阅读过关于WooCommerce的'钩子和过滤器'的文章,但它没有解释在案例的基础上在何处或如何更改这些内容。
非常感谢任何帮助。
我是这个系统的新手,我确信我只是在看一些非常明显的东西。
谢谢, MIKEY。
答案 0 :(得分:53)
但这是什么?它从何而来??有没有任何线索 动作名称,我可以找到为其生成的HTML的位置 编辑它的目的是什么?
这是action hook
。它没有按照自己的意思单独执行任何操作,而是将注释hook
中列出的函数放入其中,因此在触发此函数时运行。它在评论中说,函数woocommerce_template_loop_product_thumbnail
是负责获取缩略图的函数。你可以在Woocommerce插件中找到这个功能。我使用Sublime Text编辑器(虽然我认为其他人也会这样做)在整个文件夹中搜索该短语,它会告诉我它究竟是什么文件。在这种情况下,它就是所谓的可插入函数,位于woocommerce-template.php
。 (它现在在版本2.1 +中称为wc-template-hooks.php)
可插入功能意味着您在主题的函数中定义了具有相同名称的新版本的函数.php
function woocommerce_template_loop_product_thumbnail(){
echo "apple";
}
如果你把上面的内容放在你的functions.php中,而不是Woo的woocommerce_template_loop_product_thumbnail()
你只会看到苹果这个词。
我已经阅读过关于WooCommerce的'钩子和过滤器'的文章,但它 没有解释关于在哪个地方或如何在案件中更改这些内容 案例基础。
您将对主题的functions.php进行所有更改,并且不需要根据具体情况进行更改。所有挂钩和过滤器的行为都相同。也就是说,它们不是最容易学习的东西,所以要耐心等待自己。我发现过滤器特别难以绕过我的头。
在一个无偿的自我推销的地方,我在basics of WordPress hooks and filters上写了一系列文章(一篇文章说它是专题钩子,但钩子是钩子!)这些都是我希望人们的事情在我的WordPress职业生涯开始时告诉过我。