如何在WooCommerce模板中解锁一个函数?

时间:2021-06-25 作者:sackadelic

我有一个基本问题一直困扰着我。我正在尝试将明星评级移到评论元中,这将帮助我设计风格。这是模板文件review.php 第节:

<div class="comment-text">

           <?php
           /**
            * The woocommerce_review_before_comment_meta hook.
            *
            * @hooked woocommerce_review_display_rating - 10 //Want to unhook this.
            */
           do_action(\'woocommerce_review_before_comment_meta\', $comment);

           /**
            * The woocommerce_review_meta hook.
            *
            * @hooked woocommerce_review_display_meta - 10
            */
           do_action(\'woocommerce_review_meta\', $comment);

           do_action(\'woocommerce_review_before_comment_text\', $comment);

           /**
            * The woocommerce_review_comment_text hook
            *
            * @hooked woocommerce_review_display_comment_text - 10
            */
           do_action(\'woocommerce_review_comment_text\', $comment);

           do_action(\'woocommerce_review_after_comment_text\', $comment);
           ?>

       </div>
我想我可以在我的功能中添加以下内容。php:

    remove_action(\'woocommerce_review_display_rating\', 10);
并将其添加回评论元中。php,但我无法删除/取消挂起星级。我做错了什么?

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

您需要将函数从该操作中解除挂钩,具体如下:

remove_action( \'woocommerce_review_before_comment_meta\',
               \'woocommerce_review_display_rating\', 10 );
(例如,在includes/wc模板挂钩中查找相反的add\\u action()行。php)

您还需要确保在WooCommerce加载并添加了要删除的操作后运行此操作,例如,将其放置在plugins\\u加载的挂钩中:

function unhook_display_rating() {
    remove_action( \'woocommerce_review_before_comment_meta\',
                   \'woocommerce_review_display_rating\', 10 );
}
add_action( \'plugins_loaded\', \'unhook_display_rating\', 10, 0 );

SO网友:Tom J Nowell

remove_action 要求第二个参数是添加的函数/可调用函数的名称,并且优先级必须与添加的内容匹配。

The official documentation 表示其参数为:

remove_action( string $tag, callable $function_to_remove, int $priority = 10 )

您还可以使用remove_all_actions:

remove_all_actions( \'hook name\' );
请记住,挂钩就像事件一样,您无法删除尚未添加的内容,因此,何时调用此函数很重要,而不仅仅是如何调用。

相关推荐

OOP development and hooks

我目前正在为Wordpress编写我的第一个OOP插件。为了帮助我找到一点结构,a boiler plate 这为我奠定了基础。在里面Main.php 有一种方法可以为管理员加载JS和CSS资产:/** * Register all of the hooks related to the admin area functionality * of the plugin. * * @since 0.1.0 * @access private