Mammothdesign - logo

WP – Repeater post_meta

Plik wywołanie danych na froncie

$arr_document = get_post_meta($post->ID, 'repeater', false);
     foreach ( $arr_document as $doc){
       if (isset($doc)){
         foreach ( $doc as $mydocs){
           echo $mydocs['title'].' - '.$mydocs['url'].' - '.$mydocs['class'].'
'; } } }

Plik functions.php

function mb_add_custom_box() {
    add_meta_box(
        'mb_sectionid',
        __( 'Dodaj dokumenty', 'myplugin_textdomain' ),
        'mb_inner_custom_box',
        'page', //page,post,Post type
        'normal', 
		'default' 
        );

}

function mb_inner_custom_box() {
    global $post;
    wp_nonce_field( plugin_basename( __FILE__ ), 'mbMeta_noncename' );
    ?>
    <div id="meta_inner">
    <?php
    $repeater = get_post_meta($post->ID,'repeater',false);

    $c = 0;
    if ( count( $repeater ) > 0 ) {
        if(!empty($repeater)){
            foreach( $repeater as $track_val ) {
                if (isset($track_val)){
                    foreach( $track_val as $track ) {
                        if ( isset( $track['title'] ) || isset( $track['track'] )  || isset( $track['class'] )     ) {
                            printf( '<div><p>Nazwa dokumentu<input type="text" name="repeater[%1$s][title]" value="%2$s" />URL dokumentu <input type="text" name="repeater[%1$s][url]" value="%3$s" />Rodzaj dokumentu <input type="text" name="repeater[%1$s][class]" value="%4$s" /><br><span class="remove" style="color:red; cursor:pointer;">%5$s</span></p><hr></div>', $c, $track['title'], $track['url'], $track['class'], __( '[x] Usuń' ) );
                            $c = $c +1;
                        }
                    }
                }
            }
        }    
    }

    ?>
<span id="here"></span>
<span class="add button button-primary button-large"><?php _e('Dodaj dokument'); ?></span>
<script>
    var $ =jQuery.noConflict();
    $(document).ready(function() {
        var count = <?php echo $c; ?>;
        $(".add").click(function() {
            count = count + 1;

            $('#here').append('<div><p> Nazwa dokumentu <input type="text" name="repeater['+count+'][title]" value="" />URL dokumentu <input type="text" name="repeater['+count+'][url]" value="" />Rodzaj dokumentu <input type="text" name="repeater['+count+'][class]" value="" /><br><span class="remove" style="color:red; cursor:pointer;"> [x] Usuń</span></p><hr></div>' );
            return false;
        });
        $(".remove").live('click', function() {
            $(this).parent().remove();
        });
    });
    </script>
</div><?php

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

function mb_save_postdata( $post_id ) {
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) 
        return;

    if ( !isset( $_POST['mbMeta_noncename'] ) )
        return;

    if ( !wp_verify_nonce( $_POST['mbMeta_noncename'], plugin_basename( __FILE__ ) ) )
        return;

    $repeater = $_POST['repeater'];

    update_post_meta($post_id,'repeater',$repeater);
}
add_action( 'save_post', 'mb_save_postdata' );
Strona główna bloga