获取自定义支付网关数据作为 Woocommerce 3 中的设置

Get custom payment gateway data as settings in Woocommerce 3

我正在制作自定义支付网关。复杂的部分进展顺利,但我现在已经被困在一些愚蠢的事情上好几个小时了。

我已经为网关创建了自定义设置,没有问题,它们可以设置和保存,但我不知道如何在其他功能中调用它们。

如果我将 var_dump($this->get_option('title')) 放在自定义网关 class(extends WC_Payment_Gateway)中,它将正确显示在设置页面的顶部。其他地方,它不会。我现在已经尝试了数百种方法,例如尝试通过 $this = new WC_Custom_Gateway 访问此 class,创建涉及的函数 public,以及利用 init_settings().. 我肯定有一个非常简单的解决方案,但作为初学者我就是看不到它。我试过检查其他人的工作也无济于事。

如何使这些设置在定义它们的 class 之外可用?

使用以下代码,您可以使用 WC_Payment_Gateways and 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 …

已测试并有效。

You can also use some WC_Payment_Gateway methods on $payment_gateway