Advertisement
bowenac

my meta box

Oct 18th, 2013
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.97 KB | None | 0 0
  1. <?php
  2. // enqueue scripts and styles, but only if is_admin
  3. if(is_admin()) {
  4.     wp_enqueue_script('custom-js', get_template_directory_uri().'/js/custom-js.js');
  5.     wp_enqueue_script('jquery.confirm.min', get_template_directory_uri().'/js/jquery.confirm.min.js');  
  6.     wp_enqueue_script('bootstrap.min', get_template_directory_uri().'/js/bootstrap/js/bootstrap.min.js');  
  7.     wp_enqueue_script('edit-box', get_template_directory_uri().'/js/edit-box.js');    
  8.     wp_enqueue_style('jquery-ui-custom', get_template_directory_uri().'/css/jquery-ui-custom.css');
  9.     wp_enqueue_style('page-builder', get_template_directory_uri().'/css/page-builder.css');
  10.     wp_enqueue_style('bootstrap', get_template_directory_uri().'/js/bootstrap/css/bootstrap.css');
  11. }
  12. // Add the Meta Box
  13. function add_custom_meta_box() {
  14.     add_meta_box(
  15.         'custom_meta_box', // $id
  16.         'Custom Meta Box', // $title
  17.         'show_custom_meta_box', // $callback
  18.         'page', // $page
  19.         'normal', // $context
  20.         'high'); // $priority
  21. }
  22. add_action('add_meta_boxes', 'add_custom_meta_box');
  23.  
  24. $custom_meta_fields = array(
  25.  
  26.         'Divider' =>array(
  27.             'text'=>array(
  28.                 'title'=> 'BACK TO TOP TEXT',
  29.                 'name'=> 'page-option-item-divider-text',
  30.                 'type'=> 'inputtext'
  31.                 )              
  32.         ),
  33.         'Column'=>array(
  34.             'column-text'=>array(
  35.                 'title'   => 'Column Text',
  36.                 'name'    => 'page-option-item-column-text',
  37.                 'type'    => 'textarea'
  38.                 )
  39.         ),
  40.         'Quote'=>array(
  41.             'quote-text'=>array(
  42.                 'title'   => 'Quote Text',
  43.                 'name'    => 'page-option-item-quote-text',
  44.                 'type'    => 'textarea'
  45.                 )
  46.         )
  47. );
  48. ?>
  49.  
  50. <?php
  51. // The Callback
  52. function show_custom_meta_box() {
  53. global $custom_meta_fields, $post;
  54. $values = get_post_custom( $post->ID );
  55. $selected = isset( $values['page-selected-elements'] ) ? $values['page-selected-elements'][0] : '';
  56. echo '<div id="gdl-overlay-wrapper">';
  57. default_items();
  58. echo '<div class="page-element-lists" id="page-element-lists">';
  59. page_items();
  60. echo '</div>';
  61. clone_to();
  62. echo '</div>';
  63. // Use nonce for verification
  64. echo '<input type="hidden" name="custom_meta_box_nonce" value="'.wp_create_nonce(basename(__FILE__)).'" />';
  65. }
  66.  
  67. // Select Add options
  68. function default_items(){
  69. global $custom_meta_fields, $post;
  70. ?>
  71. <div class="page-select-element-list-wrapper combobox">
  72. <select id="page-select-element-list">
  73. <option>Select an item</option>
  74. <?php
  75. foreach ($custom_meta_fields as $page_meta_box => $value) {
  76.     echo '<option>' .$page_meta_box. '</option>';
  77. }
  78. ?>
  79. </select>
  80. </div>
  81. <input type="button" value="Add item" class="page-add-item-button" id="page-add-item-button">
  82. <?php
  83. }
  84.  
  85. // Elements to clone
  86. function page_items(){
  87. global $custom_meta_fields, $post;
  88.  
  89. foreach( $custom_meta_fields as $page_meta_box => $value ){  
  90.  
  91. if($page_meta_box == 'Column'){
  92.     $size = 'element1-4';
  93.     $defaultsize = '1/4';
  94. }
  95. elseif($page_meta_box == 'Divider'){
  96.     $size = 'element1-1';
  97.     $defaultsize = '1/1';
  98. }
  99.  
  100. ?>
  101.     <div id="page-element" class="page-element <?php echo $size; ?>" rel="<?php echo $page_meta_box; ?>">
  102.         <div class="page-element-item">
  103.             <div class="left-side">
  104.                 <input type="button" class="increase-size" value="+"/>
  105.                 <input type="button" class="decrease-size" value="-"/>
  106.                 <span class="element-description"> <?php echo $page_meta_box; ?> </span>
  107.             </div>
  108.             <input type="hidden" name="" value="Tab" class="page-option-item-type" id="page-option-item-type">
  109.             <input type="hidden" name="" value="element1-4" class="page-option-item-size" id="page-option-item-size">
  110.             <div class="right-side">
  111.                 <span class="element-size-text" id="element-size-text"><?php echo $defaultsize; ?></span>
  112.                 <div class="change-element-property">
  113.                             <a title="Edit"><div class="edit-element" id="page-element-edit-box" rel="gdl-edit-box"></div></a>
  114.                             <a title="Delete"><div id="delete-element" class="remove-element"></div></a>
  115.                 </div>
  116.             </div>
  117.         </div>
  118.         <div class="page-element-edit" id="my_modal">
  119.         <?php
  120.            if($page_meta_box == 'Column'){
  121.             echo 'Title: <input type="text"/>';
  122.             echo 'Content: <textarea></textarea>';
  123.         }
  124.         elseif($page_meta_box == 'Divider'){
  125.             echo '<hr>';
  126.         }
  127.         elseif($page_meta_box == 'Quote'){
  128.             echo 'Content: <textarea></textarea>';
  129.         }
  130.         ?>
  131.         </div>
  132.     </div>
  133. <?php
  134. }
  135. }
  136.  
  137. // Area for added elements
  138. function clone_to(){
  139.     ?>
  140.  
  141.     <div class="page-methodology">
  142.     <div class="page-selected-elements-wrapper">
  143.     <div id="page-selected-elements" class="page-selected-elements page-no-sidebar ui-sortable">
  144.     <?php
  145.     $meta_value = get_post_meta( $post_id, $meta_key, true );      
  146.     ?>        
  147.     </div>
  148.     </div>
  149.     </div>
  150.     <?php
  151. }
  152.  
  153. function remove_taxonomy_boxes() {
  154.     remove_meta_box('categorydiv', 'post', 'side');
  155. }
  156. add_action( 'admin_menu' , 'remove_taxonomy_boxes' );
  157.  
  158. // Save the Data THIS IS FROM THE EXAMPLE NEED TO FIGURE OUT HOW TO SAVE NEW DATA
  159. add_action('save_post', 'save_custom_meta');
  160. function save_custom_meta($post_id) {
  161.     global $custom_meta_fields;
  162.    
  163.     // verify nonce
  164.     if (!wp_verify_nonce($_POST['custom_meta_box_nonce'], basename(__FILE__)))
  165.         return $post_id;
  166.     // check autosave
  167.     if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
  168.         return $post_id;
  169.     // check permissions
  170.     if ('page' == $_POST['post_type']) {
  171.         if (!current_user_can('edit_page', $post_id))
  172.             return $post_id;
  173.         } elseif (!current_user_can('edit_post', $post_id)) {
  174.             return $post_id;
  175.     }
  176.    
  177.     /* Get the posted data and sanitize it for use as an HTML class. */
  178.     $new_meta_value = ( isset( $_POST['page-selected-elements'] ) ? sanitize_html_class( $_POST['page-selected-elements'] ) : '' );
  179.  
  180.     /* Get the meta key. */
  181.     $meta_key = 'page-selected-elements';
  182.  
  183.     /* Get the meta value of the custom field key. */
  184.     $meta_value = get_post_meta( $post_id, $meta_key, true );
  185.  
  186.     /* If a new meta value was added and there was no previous value, add it. */
  187.     if ( $new_meta_value && '' == $meta_value )
  188.         add_post_meta( $post_id, $meta_key, $new_meta_value, true );
  189.  
  190.     /* If the new meta value does not match the old value, update it. */
  191.     elseif ( $new_meta_value && $new_meta_value != $meta_value )
  192.         update_post_meta( $post_id, $meta_key, $new_meta_value );
  193.  
  194.     /* If there is no new meta value but an old value exists, delete it. */
  195.     elseif ( '' == $new_meta_value && $meta_value )
  196.         delete_post_meta( $post_id, $meta_key, $meta_value );
  197. }
  198.  
  199. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement