it-swarm.com.de

füge die Meta Box mit function.php hinzu

hallo, weiß jemand, wie ich andere Meta-Box hinzufügen und die Daten in einem anderen benutzerdefinierten Feld speichern kann, mit dem Code unten.

<?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 );

} ?>
2
user5601
function add_meta_boxes() {
     add_meta_box(
          'repeatable-fields',
          'Audio Playlist',
          'repeatable_meta_box_display',
          'post',
          'normal',
          'high');

     add_meta_box(
          'wpa-45985',
          'Wordpress Answers Metabox',
          'wpa_meta_box_display',
          'post',
          'normal',
          'high');

} add_action('admin_menu', 'add_meta_boxes');

definieren sie einfach eine 2. metabox, definieren sie dann ihre anzeigefunktion und speichern sie die funktion. es ist genau das gleiche. AUSSER, wenn Sie es als anderen Metaeintrag speichern möchten, ändern Sie das Namensattribut für alle neuen Eingaben.

beispiel: Ihre erste Metabox hat den Namen "custom_audio []". Wenn Sie also die zweite Box in einem anderen Metaeintrag speichern möchten, würden Sie die Metaeingaben anders benennen

<input type="text" name="wpa_45985['input1']" />
<input type="text" name="wpa_45985['input2']" />

und alle Ihre Meta in diesem Feld werden im Metaschlüssel wpa_45985 gespeichert

bearbeiten # 1: Hinzufügen von Anzeigen und Speichern von Rückrufen. Sie sollten der Speicherfunktion einige Datenbereinigungen hinzufügen, dies sollte jedoch ein guter Anfang sein

function wpa_meta_box_display() {
    global $post;
    wp_nonce_field( 'wpa_45985', 'wpa_45985_nonce' );


$meta = get_post_meta($post->ID, 'wpa_45985', true);

$foo = isset($meta[foo]) ? $meta[foo] : '';
$bar = isset($meta[bar]) ? $meta[bar] : '';
?>
<input type="text" class="widefat" name="wpa_45985[foo]" value="<?php echo $foo; ?>"/>
<input type="text" class="widefat" name="wpa_45985[bar]" value="<?php echo $bar; ?>"/>


<?php

}

add_action('save_post', 'wpa_meta_box_save');
function wpa_meta_box_save($post_id) {
    global $custom_meta_fields;
    if ( ! isset( $_POST['wpa_45985_nonce'] ) ||
        ! wp_verify_nonce( $_POST['wpa_45985_nonce'], 'wpa_45985' ) )
        return;

    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
        return;

    if (!current_user_can('edit_post', $post_id))
        return;

    update_post_meta($post_id,'wpa_45985',$_POST['wpa_45985']);

} ?>
2
helgatheviking