嗨,有人知道我如何使用下面的代码添加其他元框并将数据保存在不同的自定义字段中吗。
<?php
function add_meta_boxes() {
add_meta_box(
\'repeatable-fields\',
\'Audio Playlist\',
\'repeatable_meta_box_display\',
\'post\',
\'normal\',
\'high\');
}
add_action(\'admin_menu\', \'add_meta_boxes\');
function repeatable_meta_box_display() {
global $custom_meta_fields, $post;
wp_nonce_field( \'repeatable_meta_box_nonce\', \'repeatable_meta_box_nonce\' );
//$repeatable_fields = get_post_meta($post->ID, $prefix, true);
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
$(\'.metabox_submit\').click(function(e) {
e.preventDefault();
$(\'#publish\').click();
});
$(\'#add-row\').on(\'click\', function() {
var row = $(\'.empty-row.screen-reader-text\').clone(true);
row.removeClass(\'empty-row screen-reader-text\');
row.insertBefore(\'#repeatable-fieldset-one tbody>tr:last\');
return false;
});
$(\'.remove-row\').on(\'click\', function() {
$(this).parents(\'tr\').remove();
return false;
});
$(\'#repeatable-fieldset-one tbody\').sortable({
opacity: 0.6,
revert: true,
cursor: \'move\',
handle: \'.sort\'
});
});
</script>
<?php
$meta = get_post_meta($post->ID, \'custom_audio\', true);
?>
<table id="repeatable-fieldset-one" width="100%">
<thead>
<tr>
<th width="2%"></th>
<th width="30%">Name</th>
<th width="60%">URL</th>
<th width="2%"></th>
</tr>
</thead>
<tbody>
<?php
if ( $meta ) {
foreach ( $meta as $field ) {
?>
<tr>
<td><a class="button remove-row" href="#">-</a></td>
<td><input type="text" class="widefat" name="name[]" value="<?php if($field[\'name\'] != \'\') echo esc_attr( $field[\'name\'] ); ?>" /></td>
<td><input type="text" class="widefat" name="url[]" value="<?php if ($field[\'url\'] != \'\') echo esc_attr( $field[\'url\'] ); else echo \'http://\'; ?>" /></td>
<td><a class="sort">|||</a></td>
</tr>
<?php
}
} else {
// show a blank one
?>
<tr>
<td><a class="button remove-row" href="#">-</a></td>
<td><input type="text" class="widefat" name="name[]" /></td>
<td><input type="text" class="widefat" name="url[]" value="http://" /></td>
<td><a class="sort">|||</a></td>
</tr>
<?php } ?>
<!-- empty hidden one for jQuery -->
<tr class="empty-row screen-reader-text">
<td><a class="button remove-row" href="#">-</a></td>
<td><input type="text" class="widefat" name="name[]" /></td>
<td><input type="text" class="widefat" name="url[]" value="http://" /></td>
<td><a class="sort">|||</a></td>
</tr>
</tbody>
</table>
<p><a id="add-row" class="button" href="#">Add another</a>
<input type="submit" class="metabox_submit" value="Save" />
</p>
<?php
}
add_action(\'save_post\', \'repeatable_meta_box_save\');
function repeatable_meta_box_save($post_id) {
global $custom_meta_fields;
if ( ! isset( $_POST[\'repeatable_meta_box_nonce\'] ) ||
! wp_verify_nonce( $_POST[\'repeatable_meta_box_nonce\'], \'repeatable_meta_box_nonce\' ) )
return;
if (defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE)
return;
if (!current_user_can(\'edit_post\', $post_id))
return;
// loop through fields and save the data
$old = get_post_meta($post_id, \'custom_audio\', true);
$new = array();
$names = $_POST[\'name\'];
$urls = $_POST[\'url\'];
$count = count( $names );
for ( $i = 0; $i < $count; $i++ ) {
if ( $names[$i] != \'\' ) :
$new[$i][\'name\'] = stripslashes( strip_tags( $names[$i] ) );
if ( $urls[$i] == \'http://\' )
$new[$i][\'url\'] = \'\';
else
$new[$i][\'url\'] = stripslashes( $urls[$i] ); // and however you want to sanitize
endif;
}
if ( !empty( $new ) && $new != $old )
update_post_meta( $post_id, \'custom_audio\', $new );
elseif ( empty($new) && $old )
delete_post_meta( $post_id, \'custom_audio\', $old );
} ?>