获取自定义支付网关数据作为 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
我正在制作自定义支付网关。复杂的部分进展顺利,但我现在已经被困在一些愚蠢的事情上好几个小时了。
我已经为网关创建了自定义设置,没有问题,它们可以设置和保存,但我不知道如何在其他功能中调用它们。
如果我将 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