私は現在、人々がCMS内で新しいコンテンツブロックを作成できるようにするPHPクラスに取り組んでいます。私ができるようにしたいのは、ユーザーがクラスに入力名、値、およびおよびその他のオプション (選択済みと考える、およびチェックボックスとラジオ ボタンのオプション)
私の最初の問題は、現在これを行っているクラスにそのデータを送信するのに問題があることです。
homepageSlider->add_meta_box(
'Book Info',
array(
'Year' => array(
'type' => 'checkbox',
array(
'options' => 'Year 1',
'Year 2',
'Year 3'
)
),
'Genre' => 'text'
)
);
上の図では、book info というコンテンツ ブロックを作成していることがわかります。このコンテンツ タイプには、Year (3 つのチェックボックスがある) と、テキスト フィールドになる Genre という 2 つのフォーム フィールドがあります。
私の質問は、この方法が機能していないようだということです。上記の配列の各部分をループして、必要なすべての情報を吐き出す方法がわかりません。誰でもこれに光を当てることができますか?
多次元になるように配列を正しく形成していますか? これが必要だと私が信じていることですか、それとも私のクラスの問題でしょうか?
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 )
);
}