Created
January 3, 2013 19:19
-
-
Save WagnerMatos/4446179 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The Callback | |
function page_show_custom_meta_box() { | |
global $page_custom_meta_fields, $post; | |
// Use nonce for verification | |
echo '<input type="hidden" name="custom_meta_box_nonce" value="'.wp_create_nonce(basename(__FILE__)).'" />'; | |
// Begin the field table and loop | |
echo '<table class="form-table">'; | |
foreach ($page_custom_meta_fields as $field) { | |
// get value of this field if it exists for this post | |
$meta = get_post_meta($post->ID, $field['id'], true); | |
// begin a table row with | |
echo '<tr> | |
<th><label for="'.$field['id'].'">'.$field['label'].'</label></th> | |
<td>'; | |
switch($field['type']) { | |
// text | |
case 'text': | |
echo '<input type="text" name="'.$field['id'].'" id="'.$field['id'].'" value="'.$meta.'" size="30" /> | |
<br /><span class="description">'.$field['desc'].'</span>'; | |
break; | |
// textarea | |
case 'textarea': | |
echo '<textarea name="'.$field['id'].'" id="'.$field['id'].'" cols="60" rows="4">'.$meta.'</textarea> | |
<br /><span class="description">'.$field['desc'].'</span>'; | |
break; | |
// checkbox | |
case 'checkbox': | |
echo '<input type="checkbox" name="'.$field['id'].'" id="'.$field['id'].'" ',$meta ? ' checked="checked"' : '','/> | |
<label for="'.$field['id'].'">'.$field['desc'].'</label>'; | |
break; | |
// select | |
case 'select': | |
echo '<select name="'.$field['id'].'" id="'.$field['id'].'">'; | |
foreach ($field['options'] as $option) { | |
echo '<option', $meta == $option['value'] ? ' selected="selected"' : '', ' value="'.$option['value'].'">'.$option['label'].'</option>'; | |
} | |
echo '</select><br /><span class="description">'.$field['desc'].'</span>'; | |
break; | |
// radio | |
case 'radio': | |
foreach ( $field['options'] as $option ) { | |
echo '<input type="radio" name="'.$field['id'].'" id="'.$option['value'].'" value="'.$option['value'].'" ',$meta == $option['value'] ? ' checked="checked"' : '',' /> | |
<label for="'.$option['value'].'">'.$option['label'].'</label><br />'; | |
} | |
echo '<span class="description">'.$field['desc'].'</span>'; | |
break; | |
// checkbox_group | |
case 'checkbox_group': | |
foreach ($field['options'] as $option) { | |
echo '<input type="checkbox" value="'.$option['value'].'" name="'.$field['id'].'[]" id="'.$option['value'].'"',$meta && in_array($option['value'], $meta) ? ' checked="checked"' : '',' /> | |
<label for="'.$option['value'].'">'.$option['label'].'</label><br />'; | |
} | |
echo '<span class="description">'.$field['desc'].'</span>'; | |
break; | |
// tax_select | |
case 'tax_select': | |
echo '<select name="'.$field['id'].'" id="'.$field['id'].'"> | |
<option value="">Select One</option>'; // Select One | |
$terms = get_terms($field['id'], 'get=all'); | |
$selected = wp_get_object_terms($post->ID, $field['id']); | |
foreach ($terms as $term) { | |
if (!empty($selected) && !strcmp($term->slug, $selected[0]->slug)) | |
echo '<option value="'.$term->slug.'" selected="selected">'.$term->name.'</option>'; | |
else | |
echo '<option value="'.$term->slug.'">'.$term->name.'</option>'; | |
} | |
$taxonomy = get_taxonomy($field['id']); | |
echo '</select><br /><span class="description"><a href="'.get_bloginfo('home').'/wp-admin/edit-tags.php?taxonomy='.$field['id'].'">Manage '.$taxonomy->label.'</a></span>'; | |
break; | |
// post_list | |
case 'post_list': | |
$items = get_posts( array ( | |
'post_type' => $field['post_type'], | |
'posts_per_page' => -1 | |
)); | |
echo '<select name="'.$field['id'].'" id="'.$field['id'].'"> | |
<option value="">Select One</option>'; // Select One | |
foreach($items as $item) { | |
echo '<option value="'.$item->ID.'"',$meta == $item->ID ? ' selected="selected"' : '','>'.$item->post_type.': '.$item->post_title.'</option>'; | |
} // end foreach | |
echo '</select><br /><span class="description">'.$field['desc'].'</span>'; | |
break; | |
// date | |
case 'date': | |
echo '<input type="text" class="datepicker" name="'.$field['id'].'" id="'.$field['id'].'" value="'.$meta.'" size="30" /> | |
<br /><span class="description">'.$field['desc'].'</span>'; | |
break; | |
// slider | |
case 'slider': | |
$value = $meta != '' ? $meta : '0'; | |
echo '<div id="'.$field['id'].'-slider"></div> | |
<input type="text" name="'.$field['id'].'" id="'.$field['id'].'" value="'.$value.'" size="5" /> | |
<br /><span class="description">'.$field['desc'].'</span>'; | |
break; | |
// image | |
case 'image': | |
$image = get_template_directory_uri().'/images/image.png'; | |
echo '<span class="custom_default_image" style="display:none">'.$image.'</span>'; | |
if ($meta) { $image = wp_get_attachment_image_src($meta, 'medium'); $image = $image[0]; } | |
echo '<input name="'.$field['id'].'" type="hidden" class="custom_upload_image" value="'.$meta.'" /> | |
<img src="'.$image.'" class="custom_preview_image" alt="" /><br /> | |
<input class="custom_upload_image_button button" type="button" value="Choose Image" /> | |
<small> <a href="#" class="custom_clear_image_button">Remove Image</a></small> | |
<br clear="all" /><span class="description">'.$field['desc'].'</span>'; | |
break; | |
// repeatable | |
case 'repeatable': | |
echo '<a class="repeatable-add button" href="#">+</a> | |
<ul id="'.$field['id'].'-repeatable" class="custom_repeatable">'; | |
$i = 0; | |
if ($meta) { | |
foreach($meta as $row) { | |
echo '<li><span class="sort hndle">|||</span> | |
<input type="text" name="'.$field['id'].'['.$i.']" id="'.$field['id'].'" value="'.$row.'" size="30" /> | |
<a class="repeatable-remove button" href="#">-</a></li>'; | |
$i++; | |
} | |
} else { | |
echo '<li><span class="sort hndle">|||</span> | |
<input type="text" name="'.$field['id'].'['.$i.']" id="'.$field['id'].'" value="" size="30" /> | |
<a class="repeatable-remove button" href="#">-</a></li>'; | |
} | |
echo '</ul> | |
<span class="description">'.$field['desc'].'</span>'; | |
break; | |
} //end switch | |
echo '</td></tr>'; | |
} // end foreach | |
echo '</table>'; // end table | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment