我在WordPress中创建多个元框,我希望用户能够打开或关闭某些框。
因此,他们单击一个单选按钮(在单独的元框中),更新选项,并且将显示附加到该无线电值的附加元框。
所以它基本上从一个元框(选择框)到两个元框(选择框,和他们刚选择的新框)。
在我的代码中,你可以通过设置这样的东西来创建一个元框(这是用户选择其他元框来打开/关闭的单选框):
// Create meta box that gives user ability to select additional meta box,
// which will then show upon saving the post
$meta_boxes[] = array(
'id' => 'meta_box_id',
'title' => 'Box title',
'pages' => array('page'),
'context' => 'side',
'priority' => 'low',
'fields' => array(
array(
'name' => 'Select:',
'id' => $prefix . 'meta_box_id',
'type' => 'radio',
'options' => array(
array('name' => 'Value 1', 'value' => 'value_one'),
array('name' => 'Value 2', 'value' => 'value_two'),
)
)
)
);
以下是WordPress中的内容:
这是另一个元框,一旦在上面的元框中选择(假设选择了value_one),将出现在帖子屏幕上:
// This meta box will only show if 'value_one' is selected from
the radio box above
$meta_boxes[] = array(
'id' => 'standard_lead',
'title' => 'Standard Lead',
'pages' => array('page'),
'context' => 'normal',
'priority' => 'high',
'lead' => 'value_one',
'fields' => array(
array(
'type' => 'text',
'id' => $prefix . 'standard_title',
'name' => 'Lead Title',
'desc' => 'The title of your Standard Lead',
'width' => '100'
),
array(
'type' => 'textarea',
'id' => $prefix . 'standard_content',
'name' => 'Lead Content',
'desc' => 'The content of your Standard Lead (you can use HTML)',
'width' => '100'
)
)
);
该代码的重要部分是:
'lead' => 'value_one',
我的计划是将['lead']值(来自上面的元框代码)与['value']值(来自无线电元框)匹配,这样它们就可以连接,然后测试使用IF语句确保它们等于同一个东西,然后仅在它们都等于value_one时显示。
下面的函数实际上是将元框添加到WordPress中。在该函数中,我尝试创建此IF语句以将这两者匹配在一起:
if($this->_meta_box['value'] == $this->_meta_box['lead'])
但它不起作用,我不确定如何定位['value'],因为它嵌套在多个数组中(或者我认为是问题)。
这是完整的功能:
function add_meta_boxes()
{
$this->_meta_box['context'] = empty($this->_meta_box['context']) ? 'normal' : $this->_meta_box['context'];
$this->_meta_box['priority'] = empty($this->_meta_box['priority']) ? 'high' : $this->_meta_box['priority'];
foreach($this->_meta_box['pages'] as $page)
{
if($this->_meta_box['value'] == $this->_meta_box['lead'])
{
// adds meta box to WP
add_meta_box($this->_meta_box['id'], $this->_meta_box['title'], array(&$this, 'show_meta_boxes'), $page, $this->_meta_box['context'], $this->_meta_box['priority']);
}
}
}
答案 0 :(得分:0)
要在PHP中访问多维数组值,请使用以下语法:
$arrayVar['key1']['key2'];
因此,要访问第一个数组中的“value”键,请执行以下操作:
$this->_meta_box['fields']['options'];
/* returns
array(
array('name' => 'Value 1', 'value' => 'value_one'),
array('name' => 'Value 2', 'value' => 'value_two'),
);
*/
// to get the first option's value
$this->_meta_box['fields']['options'][0]['value'];
// to get the second option's value
$this->_meta_box['fields']['options'][1]['value'];