获取自定义支付网关数据作为 Woocommerce 3 中的设置
Posted
技术标签:
【中文标题】获取自定义支付网关数据作为 Woocommerce 3 中的设置【英文标题】:Get custom payment gateway data as settings in Woocommerce 3 【发布时间】:2019-03-21 11:59:12 【问题描述】:我正在制作一个自定义支付网关。复杂的部分进展顺利,但我现在已经被困在一些愚蠢的事情上好几个小时了。
我已经为网关创建了自定义设置,没有问题,可以设置和保存,但我不知道如何在其他功能中调用它们。
如果我将var_dump($this->get_option('title'))
放在自定义网关类(extends WC_Payment_Gateway
)中,它将正确显示在设置页面的顶部。在其他地方,它不会。我现在已经尝试了数百种方法,比如尝试通过 $this = new WC_Custom_Gateway 访问这个类,将涉及的函数公开,并利用 init_settings()
.. 我确信有一个非常简单的解决方案,但作为初学者我只是看不到它。我也试过检查其他人的工作也无济于事。
如何使这些设置在定义它们的类之外可用?
【问题讨论】:
【参考方案1】:使用以下代码,您可以使用WC_Payment_Gateways 和WC_Payment_Gateway 方法显示支付网关设置中的必要数据:
// HERE define you payment gateway ID (from $this->id in your plugin code)
$payment_gateway_id = 'bacs';
// Get an instance of the WC_Payment_Gateways object
$payment_gateways = WC_Payment_Gateways::instance();
// Get the desired WC_Payment_Gateway object
$payment_gateway = $payment_gateways->payment_gateways()[$payment_gateway_id];
// Display saved Settings example:
echo '<p>Title: ' . $payment_gateway->title . '</p>';
echo '<p>Description: ' . $payment_gateway->description . '</p>';
echo '<p>Instructions: ' . $payment_gateway->instructions . '</p>';
// Display all the raw data for this payment gateway
echo '<pre>'; print_r( $payment_gateway ); echo '</pre>';
或者,您也可以使用这种更短的方式:
// You will have to replace 'bacs' by your payment gateway ID (from $this->id in your plugin code)
$payment_gateway = WC()->payment_gateways->payment_gateways()['bacs'];
// and so on …
经过测试并且有效。
你也可以在
$payment_gateway
上使用一些WC_Payment_Gateway方法
【讨论】:
我还没有尝试过,但这看起来正是我需要的!我从没想过要尝试 ::instance() ,非常感谢! 更短的方式也可以很好地工作:$payment_gateway = WC()->payment_gateways->payment_gateways()['bacs'];
(您将在其中将“bacs”替换为您的支付网关 ID)...
附加问题,如果您/任何人有时间 - 中间部分“payment_gateways()”的目的是什么?其他一切都很清楚,但我不明白那部分在做什么,就好像它把一个对象作为一个函数调用,然后又作为一个数组调用?
payment_gateways()
是WC_Payment_Gateways
方法,它将专门获取所有现有和已定义WC_Payment_Gateway
(单数名称类) 对象的数组
+1 表示WC_Payment_Gateways::instance();
- 我使用的是new WC_Payment_Gateways()
,但这使我的实际chosen
值毫无用处。这将正确获取实际的、当前的结帐网关设置。以上是关于获取自定义支付网关数据作为 Woocommerce 3 中的设置的主要内容,如果未能解决你的问题,请参考以下文章
使用重定向的 Woocommerce 自定义支付网关工作流程
添加一个复选框作为禁用支付网关的 WooCommerce 管理产品选项
使用自定义 Woocommerce 支付网关的“下订单按钮”的 Javascript 覆盖