首页 > 解决方案 > 覆盖 Wordpress 插件挂钩

问题描述

我正在为 Stripe 使用 Wordpress 插件,它有一个名为:

do_action( 'wc_stripe_checkout_receipt_page_before_form' ); 

此操作位于 Stripe 付款表单上方,我想在此处显示一些文本,那么如何利用此钩子?

可以在下面的第 541 行的源代码中找到此操作

https://github.com/woocommerce/woocommerce-gateway-stripe/blob/master/includes/class-wc-gateway-stripe.php

这是我尝试过的

remove_action('wc_stripe_checkout_receipt_page_before_form');
add_action('foobar', 'wc_stripe_checkout_receipt_page_before_form');

function foobar(){
    echo 'foo';
}

这会产生以下警告,但不显示我的 echo 'foo'

Missing argument 2 for remove_action(),

标签: wordpresshook

解决方案


你的错误告诉你你需要知道的一切。
remove_action至少需要 2 个参数 - 与之挂钩的操作名称和函数名称。
在你的情况下,你不应该删除它,而是挂钩它。你做错了什么。for 的第一个参数add_action是您尝试挂钩的操作(wc_stripe_checkout_receipt_page_before_form在您的情况下),第二个参数是应该在该操作上执行的功能(foobar在您的情况下)。正确的调用:

add_action('wc_stripe_checkout_receipt_page_before_form', 'foobar');

这样,您的“foo”将显示表单之前,因为那是调用操作的地方。


推荐阅读