我目前正在开发一个PHP类,它允许人们在CMS中创建新的内容块,我希望能够做的是让用户能够向类发送输入名称,值和其他选项(想想选中,复选框和单选按钮的选项)
我的第一个问题是,我目前无法将数据发送到我的班级,
homepageSlider->add_meta_box(
'Book Info',
array(
'Year' => array(
'type' => 'checkbox',
array(
'options' => 'Year 1',
'Year 2',
'Year 3'
)
),
'Genre' => 'text'
)
);
在您的上方,您可以看到我正在创建一个名为book info的内容块,该内容类型有2个表单字段,Year(有3个复选框)和Genre,它将是一个文本字段。
我的问题是这种方法似乎不起作用。我不知道如何循环上面的数组的每个部分来吐出我需要的所有信息?任何人都可以对此有所了解吗?
我是否正确地形成阵列以使其成为多维的?这是我认为它需要的,或者它可能是我班级的问题?
function() use( $box_id, $box_title, $post_type_name, $box_context, $box_priority, $fields )
{
add_meta_box(
$box_id,
$box_title,
function( $post, $data )
{
global $post;
// Nonce field for some validation
wp_nonce_field( plugin_basename( __FILE__ ), 'custom_post_type' );
// Get all inputs from $data
$custom_fields = $data['args'][0];
// Get the saved values
$meta = get_post_custom( $post->ID );
//die(print_r($custom_fields));
// Check the array and loop through it
if( ! empty( $custom_fields ) )
{
/* Loop through $custom_fields */
foreach( $custom_fields as $label => $type )
{
$field_id_name = strtolower( str_replace( ' ', '_', $data['id'] ) ) . '_' . strtolower( str_replace( ' ', '_', $label ) );
echo '<label for="' . $field_id_name . '">' . $label . '</label>';
//self::getFormField($type, $field_id_name);
//<input type="'. self:getFormField($type) . '" name="custom_meta[' . $field_id_name . ']" id="' . $field_id_name . '" value="' . $meta[$field_id_name][0] . '" />';
}
}
},
$post_type_name,
$box_context,
$box_priority,
array( $fields )
);
}
答案 0 :(得分:0)
我认为你正在形成阵列错误。
homepageSlider->add_meta_box(
'Book Info',
array(
'Year' => array('type' => 'checkbox' , 'options' => array('Year 1', 'Year 2', 'Year 3')),
'Genre' => array('type' => 'text'),
)
);
但它看起来很乱。我相信用这样的数组做这件事并不是一种直观的方式。你有没有想过把它抽象成课?我觉得这样的事情会更清洁:
class metaBox {
private $inputFields = array();
public function addField($inputFieldObject) {
$this->inputFields[] = $inputFieldObject;
}
}
class inputField {
public $type = ""; // which tags
public $attributes; // which attributes
}