Я создаю несколько мета-блоков в WordPress и хочу, чтобы пользователь мог включать и выключать определенные поля.
Итак, они нажимают переключатель (в отдельном мета-поле), обновляютопции и дополнительный мета-блок, прикрепленный к этому значению радио.
Таким образом, он в основном идет от одного мета-блока (блока селектора) к двум мета-блокам (блоку селектора И новому полю, который они простоselected).
В моем коде вы можете создать мета-блок, установив что-то вроде этого (это радио-блок, где пользователь выбирает для других мета-боксов включение / выключение):
// 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'] (откод мета-поля прямо выше) для соответствия значению ['Значение e '] (из радиометаблока), чтобы их можно было соединить, а затем проверить с помощью оператора 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']);
}
}
}