32

我是 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 上阅读了有关“钩子和过滤器”的文章,但它没有解释在哪里或如何根据具体情况更改这些内容。

任何帮助将不胜感激。

我是这个系统的新手,我确信我只是忽略了一些非常明显的东西。

谢谢,米奇。

4

1 回答 1

59

但这是什么?它从何而来??动作名称中是否有任何线索可以帮助我找到正在生成的 HTML 以进行编辑?

这是一个action hook. 它本身并没有做任何事情,而是注释中列出的功能hook,因此在触发此功能时运行。它在评论中说 functionwoocommerce_template_loop_product_thumbnail是负责获取缩略图的函数。您可以在 Woocommerce 插件中找到此功能。我使用 Sublime Text 编辑器(尽管我认为其他人也会这样做)在整个文件夹中搜索该短语,它会准确告诉我它所在的文件。在这种情况下,它被称为可插入函数,位于woocommerce-template.php. (现在在 2.1+ 版本中称为 wc-template-hooks.php)

可插入函数意味着您在主题的 functions.php 中定义具有相同名称的函数的新版本

function woocommerce_template_loop_product_thumbnail(){
  echo "apple";
}

如果您将上述内容放在您的functions.php 中,那么woocommerce_template_loop_product_thumbnail()您只会看到Apple 一词,而不是Woo's。

我已经在 WooCommerce 上阅读了有关“钩子和过滤器”的文章,但它没有解释在哪里或如何根据具体情况更改这些内容。

您将在主题的 functions.php 中进行所有更改,并且无需逐案处理。所有的钩子和过滤器的行为都是一样的。也就是说,它们并不是最容易学习的东西,所以对自己要有耐心。我发现过滤器特别难缠住我的头。

在一次无偿的自我推销中,我写了一系列关于WordPress 钩子和过滤器基础知识的文章(一篇文章说它是针对主题钩子的,但钩子就是钩子!)我希望人们告诉我的所有事情我在我的 WordPress 职业生涯的开始。

于 2013-01-20T01:32:56.240 回答