Paulund
2012-10-16 #wordpress

Add Date Picker To Wordpress Admin

In a previous article you would of learnt how to add default third party applications on your Wordpress site. Here is a list of all the default scripts you can load from Wordpress. One of the useful scripts in this list is the jQuery UI features. In this tutorial you will learn how to add a field in Wordpress which uses this jQuery UI to create a field which is a date picker.

Add Input In Admin Screen

When adding fields in the Wordpress admin area you would use the function add_settings_field() to add fields to the page. The callback of this will run a function that creates the code to output the field. To create a datepicker make sure this callback function echo's an input field like below.

add_settings_field( 'example_date_picker', 'Example Date Picker', 'pu_display_date_picker', 'pu_theme_options.php', 'pu_date_section', array() );

add_action( 'admin_enqueue_scripts', 'enqueue_date_picker' );

function pu_display_date_picker($args){
     extract( $args );

     echo '<input type="date" id="datepicker" name="example[datepicker]" value="" class="example-datepicker" />';
}

/**
 * Enqueue the date picker
 */
function enqueue_date_picker(){
                wp_enqueue_script(
            'field-date-js', 
            'Field_Date.js', 
            array('jquery', 'jquery-ui-core', 'jquery-ui-datepicker'),
            time(),
            true
        );  

        wp_enqueue_style( 'jquery-ui-datepicker' );
}

The above code displays the functionality of the callback function to display a date pick in the admin area of your Wordpress site. The callback function will display a input type which has a class of example-datepicker. We also add an action on to the admin_enqueue_scripts to add some javascript to the page, on this action we then call the function enqueue_date_picker. This function will load a Javascript file called Field_Date.js, but only after it has loaded jQuery UI and jQuery UI Datepicker. With these Javascript files loaded on the page we can add some Javascript inside the Field_Date.js file to allow the input to use the jQuery UI Datepicker, copy the below code into a new Javascript file and save it as Field_Date.js.

jQuery(document).ready(function(){
    jQuery('.example-datepicker').datepicker(); 
});