Я не уверен, нужно ли это делать в вопросах WooCommerce, Wordpress или PHP, я также не знаю, как это назвать, поскольку я понятия не имею, что происходит не так, но, надеюсь, один из вас, браначары, могут помочь мне здесь.API-интерфейс интеграции интеграции Woocommerce
Я занимаюсь интеграцией WooCommerce. Вот мой код (урезанный для удобства чтения):
if (! class_exists('WC_My_Integration')) :
class WC_My_Integration extends WC_Integration {
public function __construct() {
global $woocommerce;
$this->id = 'my_id';
$this->method_title = __('My Title', 'my-text-domain');
$this->test_select = $this->get_option('test_select');
$this->init_form_fields();
add_action('woocommerce_update_options_integration', array(&$this, 'process_admin_options'));
// If I don't do this the changes aren't showing immediately
$this->process_admin_options();
var_dump($this->test_select); // Returns correct result on save, but then disappears after page reload
}
public function init_form_fields() {
$this->form_fields = array(
'test_select' => array(
'title' => __('Test Select', 'my-text-domain'),
'type' => 'select',
'options' => array(
'yes' => 'Yes',
'no' => 'No'
)
),
);
}
public function test_function() {
if('yes' === $this->test_select) {
echo "Yes";
} else {
echo "No";
}
}
public function process_admin_options() {
parent::process_admin_options();
$this->test_select = get_option('test_select');
}
public function admin_options() {
parent::admin_options();
}
}
endif;
Проблема заключается в том, когда я изменяю выберите опцию да/нет, изменение отражает лишь после того, как я перезагрузить страницу.
Таким образом, предположим, что для параметра выбора установлено значение «да». Я меняю его на «нет», нажмите кнопку «Сохранить» и перезагрузка страницы. Форма показывает, что теперь выбрано «no», а значение var_dump() - «string» no '(length = 2) ». Ожидаемый вывод text_function() теперь должен быть «no». Однако он все еще показывает «да».
Затем, когда я обновляю страницу, результат test_function() верен, и он перекликается с «нет», но только после обновления страницы. Может ли кто-нибудь пролить свет на этот вопрос, пожалуйста?
Я инициализирую плагин правильно в своем файле плагина. Не знаю, нужно ли мне это включать?
Update:
Я обновил код выше, чтобы отразить мои изменения после ответа Magnavode в. Проблема заключается в том, что после сохранения сохраняются значения, а затем исчезают после перезагрузки страницы.
Это сводит меня с ума. Я проверил базу данных, и изменения тут же отразились. Итак, где функция _construct получает данные? Любые «get_option()», которые я вставляю в функцию _construct, возвращают старые значения и отображают только новые, как только я обновляю страницу. Любой «get_option()», который я ввел в функцию «admin_options()», сразу показывает правильный/ожидаемый результат при сохранении. Кто-нибудь? Пожалуйста, помогите мне сохранить то, что осталось от моего здравомыслия. –