get\\u option函数有问题。我创建了选项页面,其中有一个字段用于表单中的测试。所有内容都将数据保存到数据库中,但当我尝试显示它时,我得到了“未定义的索引”,但该索引存在于get\\u选项数组中:
Array
(
[\'turn_on\'] => 1
)
当我尝试时:
print_r($variable);
我有点想起来,但当我尝试时:
print_r($variable[\'turn_on\']);
我得到了未定义的索引,有人知道为什么会这样工作,我如何修复它吗?
//编辑
班
if (!class_exists(\'GoToTopOrBottom\')) {
class GoToTopOrBottom {
private $options;
public function __construct()
{
$this->parent_slug = \'wtyczki\';
$this->slug = \'go-to-top-or-bottom\';
add_action(\'admin_menu\', [$this, \'addSubpage\']);
add_action(\'admin_init\', [$this, \'registerFields\']);
}
public function addSubpage ()
{
add_submenu_page(
$this->parent_slug,
\'Przejście w górę lub dół\',
\'Góra lub dół\',
\'manage_options\',
$this->slug,
[
$this,
\'view\'
]
);
}
public function view()
{
require_once(plugin_dir_path(__DIR__) . \'/views/go-to-top-or-bottom/go-to-top-or-bottom.php\');
}
public function registerFields()
{
register_setting(
\'go_to_top_or_bottom_group\',
\'go_to_top_or_bottom\'
);
add_settings_field(
\'turn_on\',
null,
null,
$this->slug
);
}
}
if (is_admin()) {
new GoToTopOrBottom;
}
}
并在管理选项页上查看表单
<div class="mt-3">
<h3>Powrót do góry lub dołu strony</h3>
<HR />
<form method="post" action="options.php">
<?php
$this->options = get_option(\'go_to_top_or_bottom\');
settings_fields(\'go_to_top_or_bottom_group\');
?>
<pre>
<?php
print_r($this->options[\'turn_on\']);
?>
</pre>
<div class="row">
<div class="col-8">
<div class="row">
<div class="col-12 col-sm-6">
<div class="form-group">
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" name="go_to_top_or_bottom[\'turn_on\']" value="1">
<span class="custom-control-indicator"></span>
<span class="custom-control-description">Włączyć plugin?</span>
</label>
</div>
</div>
<div class="col-12 col-sm-6">
test
</div>
</div>
</div>
<div class-"col-4">
<button type="submit" name="submit" id="submit" class="btn btn-primary">Zapisz zmiany</button>
</div>
</div>
</form>
</div>
最合适的回答,由SO网友:Drupalizeme 整理而成
插入get_option(\'go_to_top_or_bottom\');
作为$this->options
所以当你真的试着这样打印的时候print_r($this->options[\'turn_on\']);
您得到索引错误,因为这是一个属性!!!
正确的方法是$this->options[\'turn_on\']=get_option(\'go_to_top_or_bottom\');
更新我看到$options
是私有的,表示您不能在类外访问它。
解决方案将类型更改为public
或引入另一个属性作为public
.
如果您不想更改Class
您可以创建一个变量,以便在视图文件中使用它,如下所示:
$options=get_option(\'go_to_top_or_bottom\');
并使用
$options["\'turn_on\'"];
请注意单引号(这是由于引用名称的序列化)。