Title: make a small plugin step by step
Last modified: August 19, 2016

---

# make a small plugin step by step

 *  [jaiunblog](https://wordpress.org/support/users/jaiunblog/)
 * (@jaiunblog)
 * [17 years, 8 months ago](https://wordpress.org/support/topic/make-a-small-plugin-step-by-step/)
 * Hello,
 * I would like to add another date “new_date” on post
    so, here is my first step
   🙂 First phpmyadmin oldschool style: `ALTER TABLE`wp_posts`ADD`new_date`DATE 
   NULL ;`
 * and now the plug with a lot of line I don’t understand 🙂
 *     ```
       <?php
       /*
       Plugin Name: test
       Plugin URI: http://wordpress.org/#
       Description: xxx.
       Author: xxx xxx
       Version: 1
       Author URI: http://hello.hi/
       */
   
       /* Use the admin_menu action to define the custom boxes */
       add_action('admin_menu', 'myplugin_add_custom_box');
   
       /* Use the save_post action to do something with the data entered */
       add_action('save_post', 'myplugin_save_postdata');
   
       /* Adds a custom section to the "advanced" Post and Page edit screens */
       function myplugin_add_custom_box() {
           add_meta_box( 'myplugin_sectionid', __( 'My Post Section Title', 'myplugin_textdomain' ),
                       'myplugin_inner_custom_box', 'post', 'normal' );
       }
   
       /* Prints the inner fields for the custom post/page section */
       function myplugin_inner_custom_box() {
   
         // Use nonce for verification
   
         echo '<input type="hidden" name="myplugin_noncename" id="myplugin_noncename" value="' .
           wp_create_nonce( plugin_basename(__FILE__) ) . '" />';
       	global $wpdb,$post;
       		$postID = $post -> ID;
         // The actual fields for data entry
       $MyValue = $wpdb->get_var("SELECT new_date FROM $wpdb->posts WHERE ID={$postID}");
   
         echo '<label for="myplugin_new_field">' . __("Description for this field", 'myplugin_textdomain' ) . '</label> ';
         echo '<input type="text" name="myplugin_new_field" value="'.$MyValue.'" size="25" />';
       }
   
       /* When the post is saved, saves our custom data */
       function myplugin_save_postdata( $post_id ) {
       global $wpdb;
         // verify this came from the our screen and with proper authorization,
         // because save_post can be triggered at other times
   
         if ( !wp_verify_nonce( $_POST['myplugin_noncename'], plugin_basename(__FILE__) )) {
           return $post_id;
         }
   
         if ( 'page' == $_POST['post_type'] ) {
           if ( !current_user_can( 'edit_page', $post_id ))
             return $post_id;
         } else {
           if ( !current_user_can( 'edit_post', $post_id ))
             return $post_id;
         }
   
         // OK, we're authenticated: we need to find and save the data
   
         $mydata = $_POST['myplugin_new_field'];
   
         // TODO: Do something with $mydata
         // NOT TO DO ^^
       if (isset($mydata) && !empty ($mydata)){
   
       $wpdb -> query("UPDATE $wpdb->posts SET <code>new_date</code> = '$mydata'  WHERE <code>wp_posts</code>.<code>ID</code> ={$post_id}  ;")
       ;}
          return $mydata;
       }
       ?>
       ```
   
 * 99.9 % of this php from the doc [http://codex.wordpress.org/Function_Reference/add_meta_box](http://codex.wordpress.org/Function_Reference/add_meta_box)
 * Any suggestion, to do it better ?

The topic ‘make a small plugin step by step’ is closed to new replies.

## Tags

 * [add_meta_box](https://wordpress.org/support/topic-tag/add_meta_box/)
 * [query](https://wordpress.org/support/topic-tag/query/)

 * 0 replies
 * 1 participant
 * Last reply from: [jaiunblog](https://wordpress.org/support/users/jaiunblog/)
 * Last activity: [17 years, 8 months ago](https://wordpress.org/support/topic/make-a-small-plugin-step-by-step/)
 * Status: not resolved

## Topics

### Topics with no replies

### Non-support topics

### Resolved topics

### Unresolved topics

### All topics
