Я разработчик темы 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');