«Попытка получить свойства на не-объекте» в PHP

Я разработчик темы WordPress и по теме, над которой я работаю, я включил режим отладки и получил эту ошибку в раскрывающемся списке выбора для страницы параметров темы.

Ошибка говорит об этом: «Попытка получить свойства на не-объекте». Вот оскорбительный код:

<select name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>"> <?php foreach ($value['options'] as $option) { ?> <option value="<?php echo $option->term_id; ?>" <?php if ( $settings[$id] == $option->term_id) { echo 'selected="selected"'; }?>> <?php echo $option->name; ?> </option> <?php }?> </select> 

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

 <option value="<?php echo $option->term_id; ?>" <?php if ( $settings[$id] == $option->term_id) { echo 'selected="selected"'; }?>> 

Спасибо за любой совет! 🙂

Вы делаете это несколько раз:

 $option->someproperty 

По крайней мере, один из $option не является объектом. Когда вы делаете -> на не-объекте, вы получаете эту ошибку.

Во-первых, убедитесь, что $option действительно является объектом и исправляет использование, если это не так.

Если $option является массивом, тогда @matthewpavkov верен, вы должны сделать $option['someproperty'] вместо $option->someproperty .

Если $option обычно является объектом, возможно, get_categories() иногда возвращает null или false в состоянии сбоя. Проверяйте это перед доступом к $option .

Вот так:

 foreach ($value['options'] as $option) { if ($option) { // do whatever; } } 

Казалось бы, $option является массивом. Пытаться:

 $option['term_id'] 

Хорошо, я понимаю, о чем вы говорите. Раньше в моем коде у меня было это (слишком упрощенное, просто чтобы показать важные части):

 $news_categories = get_categories() //pulls all of the categories from WordPress array ("minititle" => '<span class="mini_title">Select the category you\'d like to use as your "Top Story" category.</span>', "id" => $shortname . "_top_story_category", "type" => "cat_select", "options" => $news_categories) 

Здесь вызывается $ value ['options']. Код является частью инструкции switch …

Мне нужно было бы опубликовать весь файл, чтобы дать контекст, и он довольно длинный.

Выполните его из действия … т.е.:

 function your_function(){ YOUR CODES HEREEEEEEEEEEE............ } ADD_ACTION('init','your_function');