Получите пользовательские данные платежного шлюза в качестве настроек в Woocommerce 3 - PullRequest
0 голосов
/ 17 октября 2018

Я делаю нестандартный платежный шлюз.Сложные детали работают хорошо, но я застрял на чем-то глупом в течение нескольких часов.

Я создал пользовательские настройки для шлюза без проблем, их можно установить и сохранить, но я не могу понятьо том, как вызывать их в других функциях.

Если я поместу var_dump($this->get_option('title')) в класс пользовательских шлюзов (который extends WC_Payment_Gateway), он будет правильно отображаться в верхней части страницы настроек.В другом месте этого не будет.Сейчас я пробовал сотни вещей, таких как попытка получить доступ к этому классу с помощью $ this = new WC_Custom_Gateway, сделать задействованные функции общедоступными и использовать init_settings() .. Я уверен, что есть очень простое решение, но как новичокЯ просто не вижу этого.Я пытался проверить работу других также безрезультатно.

Как я могу сделать эти настройки доступными вне класса, в котором они определены?

1 Ответ

0 голосов
/ 17 октября 2018

Использование следующего кода позволит вам отобразить необходимые данные из настроек вашего платежного шлюза, используя методы WC_Payment_Gateways и WC_Payment_Gateway следующим образом:

<code>// 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 '
';

В качестве альтернативы вы также можете использовать этот более короткий путь:

// 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 …

Протестировано и работает.

Вы также можете использовать некоторые WC_Payment_Gateway методов на $payment_gateway

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...