一尘不染

WooCommerce操作挂钩和覆盖模板

php

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

你能告诉我为什么这不起作用吗?

什么是正确的编辑方式?

谢谢


阅读 726

收藏
2020-05-26

共1个答案

一尘不染

首先在 下面的参考中, 您将找到如何通过主题
正确覆盖woocommerce模板
(避免编辑插件模板)

在您的第一个代码段中,如您对 woocommerce_single_product_summaryhook所看到的,您必须使用WordPress函数对 @hooked 位于此 hook位置的 所有不同模板进行排序
do_action()

do_action( 'woocommerce_single_product_summary' );

因此,在您的自定义代码(第2的代码片段)你刚更换过 ,用 钩模板蛞蝓 _(即 不是 一个钩)_和将 工作为切入点
行动挂钩 。请参阅此答案底部的参考,以获取WooCommerce操作列表并过滤现有的挂钩

后果:* 如果您将钩子替换为模板slug ,则注释列表代码中所有其他钩子模板(以 @hooked 开头)将丢失。 *


说明 (如何)

如何-具体示例:

您要 自定义woocommerce_template_single_titlehook中的
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 __

优先数 ,给出了钩模板的顺序:先中更小,在年底大…


其他方式:

您还可以使用所有现有模板的挂钩 来针对非常特定的更改或自定义,并将自定义功能置于 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

此挂钩函数的此挂钩函数的可选参数:
-模板slug(字符串)。
-优先级(int)。


2020-05-26