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
