WooCommerce-覆盖操作挂钩

时间:2015-08-12 作者:Sam

在WooCommerce模板文件“content product.php”中,我试图覆盖以下操作挂钩:

/**
* woocommerce_shop_loop_item_title hook
*
* @hooked woocommerce_template_loop_product_title - 10
*/
do_action( \'woocommerce_shop_loop_item_title\' );
为了覆盖这个钩子,我在函数中添加了以下内容。php文件:

添加操作(“woocommerce\\u shop\\u loop\\u item\\u title”,“change\\u product\\u title”);

function change_product_title() {
    echo\'<header class="entry-header"><h1 class="entry-title">\'.get_the_title().\'</h1></header>\';
}
这只会增加挂钩。如何用自己的代码完全替换钩子?我已经查看了WooCommerce文档,但它并没有给您提供很多信息。

2 个回复
最合适的回答,由SO网友:Chris 整理而成

实际上,在内容产品中更改标题非常简单。php,但您将无法使用挂钩来完成它。在文件顶部附近,您应该看到这一行:

Override this template by copying it to yourtheme/woocommerce/content-product.php
您所要做的就是将文件复制到上面的目录中,用主题的实际文件夹名替换“yourtheme”,然后对新文件进行所需的编辑。

A little more background on hooks

默认内容产品中的标题。php模板文件是这样输出的,它是在wc模板函数中定义的。php如果您搜索woocommerce\\u template\\u loop\\u product\\u title(),它将响应以下标题:

<h3><?php the_title(); ?></h3>
为了用钩子更改标题,需要将上面的一行更改为这一行,但如果不更改wc模板函数,则无法执行此操作。php文件。因此,您可以在内容产品中对操作进行注释。php文件:

//do_action( \'woocommerce_shop_loop_item_title\' );
然后添加以下行:

?><h3><?php echo apply_filters( \'my_filter_name\', get_the_title() ); ?></h3><?php
因此保存的版本如下所示:

//do_action( \'woocommerce_shop_loop_item_title\' );
?><h3><?php echo apply_filters( \'my_filter_name\', get_the_title() ); ?></h3><?php
然后,您需要将以下内容添加到主题的函数中。php文件,该文件将把get\\u the\\u title()的内容传递给$title参数,然后您可以按照自己的意愿进行更改,但在下面的情况下,会将每个标题更改为“自定义标题”:

add_filter( \'my_filter_name\', \'my_custom_function\' );

function my_custom_function( $title ) {
  return \'Custom Title\';
}
有关更多信息,请参阅以下内容:

http://codex.wordpress.org/Function_Reference/apply_filters

http://codex.wordpress.org/Function_Reference/add_filter

SO网友:mmm

在WordPress中,您不能仅仅“覆盖”一个钩子(这只适用于可插入函数)

但是,您可以向同一挂钩添加新的Fontion并删除一个动作。

尝试以下操作:

add_action("init", function () {
    // removing the woocommerce hook
    remove_action(\'woocommerce_shop_loop_item_title\', \'change_product_title\');
});

// add a new fonction to the hook
add_action("woocommerce_shop_loop_item_title", function () {

    echo "my new action";

});

结束

相关推荐

Hooks for Links Box

Possible Duplicate:Getting archive pages in WP's AJAX internal link finder? 新的有挂钩吗internal links box 创建于WP 3.1? 我正在尝试在插件中修改它。