у меня такая установка
function form($instance) {
$defaults = array(
'title' => 'Recent Products',
'number_products' => 3
);
$instance = wp_parse_args($instance, $defaults);
но мой заголовок в порядке, но number_products всегда не отображается. я отлаживал в netbeans и обнаружил, что form() запускается 2 раза и 1 раз, переменные выглядят так
$instance = array(0)
// after wp_parse_args,
$instance = array('title' => 'Recent Products', 'number_products' => 3);
при 2-м запуске wp_parse_args
, я не знаю, почему он запускается 2-й раз,
$instance = array('title' => 'Recent Products', 'number_products' => null);
// after wp_parse_args
$instance = array('title' => 'Recent Products', 'number_products' => null);
я действительно не знаю, что происходит… может кто-нибудь просветить меня?
я наконец нашел ответ, на самом деле это не проблема с кодом, который я разместил. это в
update()
функции. у меня есть код подтвержденияпроблема в 2-х местах. я должен использовать
is_numeric
overis_int
, причина в том,то в другом
$old_instance['number_product']
должно быть множественное число$old_instance['number_products']
да. таким образом, я получу именно то, что указал «при втором запуске», где оба $instance-es
array('title' => 'Recent Products', 'number_products' => null);
Тогда это, вероятно, проблема с тем, что передается функции, а не с самой функцией. Я не слишком уверен в специфике формы виджета, попробую ткнуть позже. Не могли бы вы обновить вопрос с полным кодом вашего виджета? Или, по крайней мере, достаточно, чтобы я мог скопировать и протестировать.
спасибо, на самом деле это моя ошибка, я создал ответ
Я тоже не уверен в двух прогонах. Вы пытались просто сбрасывать содержимое внутри функции вместо отладки? Что-то вроде этого: