我是一名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"'; }?>>
感谢您的任何建议! :)
答案 0 :(得分:4)
你这样做了几次:
$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;
}
}
答案 1 :(得分:0)
$option
似乎是一个数组。尝试:
$option['term_id']
答案 2 :(得分:0)
好的,我明白你在说什么。在我的代码中,我有这个(过于简化,只是为了显示重要的部分):
$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语句的一部分......
我必须发布整个文件才能给出上下文,而且它很长。
答案 3 :(得分:0)
从行动中执行......即:
function your_function(){
YOUR CODES HEREEEEEEEEEEE............
}
ADD_ACTION('init','your_function');