我仍然不知道你的目标到底是什么,但回到这个问题上,我想至少尝试提供一个解决方案。
那么试试这个,看看这是否就是你对下拉列表的想法?
add_action( \'add_meta_boxes\', \'add_inventory_metaboxes\' );
function add_inventory_metaboxes() {
add_meta_box(\'inventory_information\', \'Inventory Information\', \'inventory_information\', \'inventory\', \'side\', \'default\');
}
function inventory_dropdown_opts() {
return array(
\'Option 1\' => 1,
\'Option 2\' => 2,
\'Option 3\' => 3,
\'Option 4\' => 4,
);
}
function inventory_information() {
global $post;
$stk_num = get_post_meta( $post->ID, \'_dappcf_i_stocknum\', true );
$vin_num = get_post_meta( $post->ID, \'_dappcf_i_vin\', true );
$drp_dwn = get_post_meta( $post->ID, \'_dappcf_i_dropdown\', true );
if( empty( $drp_dwn ) )
$drp_dwn = 0;
wp_nonce_field( \'inventory_nonce\', \'inventorymeta_noncename\' );
?>
<p>
<label>Stock #</label>
<input type="text" name="_dappcf_i_stocknum" value="<?php echo $stk_num; ?>" class="small-text" />
</p>
<p>
<label>VIN</label>
<input type="text" name="_dappcf_i_vin" value="<?php echo $vin_num; ?>" class="widefat" /></p>
<p>
<label>Inventory class</label>
<select name="_dappcf_i_dropdown" class="widefat">
<?php foreach( inventory_dropdown_opts() as $text => $value ) : ?>
<option value="<?php echo $value; ?>"<?php selected( $value == $drp_dwn ); ?>><?php echo $text; ?></option>
<?php endforeach; ?>
</select>
</p>
<?php
}
add_action(\'save_post\', \'txpbs_save_events_meta\', 1, 2);
function txpbs_save_events_meta( $post_id, $post ) {
if(
!wp_verify_nonce( $_POST[\'inventorymeta_noncename\'], \'inventory_nonce\' ) ||
!current_user_can( \'edit_post\', $post_id ) ||
$post->post_type == \'revision\'
)
return;
foreach( array( \'_dappcf_i_stocknum\', \'_dappcf_i_vin\', \'_dappcf_i_dropdown\' ) as $field ) {
if( isset( $_POST[$field] ) ) {
if( \'_dappcf_i_dropdown\' == $field ) {
if( in_array( $_POST[$field], inventory_dropdown_opts() ) )
update_post_meta( $post_id, $field, $_POST[$field] );
continue;
}
update_post_meta( $post_id, $field, $_POST[$field] );
continue;
}
delete_post_meta( $post_id, $key );
}
}
Follow-up #1<如果需要在前端显示下拉列表,只需按照我在
inventory_information
功能,就像这样。。
<select name="add-a-name-here" class="widefat">
<?php foreach( inventory_dropdown_opts() as $text => $value ) : ?>
<option value="<?php echo $value; ?>"><?php echo $text; ?></option>
<?php endforeach; ?>
</select>
您的下拉选项在
inventory_dropdown_opts
函数,因此您可以使用相同的前端和管理端,并查看相同的数据。