Paulund
2012-10-15 #wordpress

Add Colour Picker To Wordpress Admin

In a previous tutorial you would of learnt how you can create your own theme options page using the Settings API. You might of also seen the tutorial about default Wordpress scripts which come with the Wordpress core. In this tutorial we are going to use both of these tutorials to create a colour picker on your theme options page using the default Wordpress scripts. When you create a field on your theme options page you use the function add_settings_field(), one of the parameters of this function is to name a callback function which displays the field on the page. The below code will add a colour picker to your theme option page.


add_settings_field( 'example_colour_picker', 'Example Colour Picker', 'pu_display_colour_picker', 'pu_theme_options.php', 'pu_colour_section', array() );

add_action( 'admin_enqueue_scripts', 'enqueue_colour_picker' );

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

     echo '<div class="farb-popup-wrapper">';
		
     echo '<input type="text" id="'.$id.'" name="'.OPT_NAME.'['.$id.']" value="'.$value.'" class="'.$class.' popup-colorpicker" style="width:70px;"/>';
     
     echo '<div id="'.$id.'picker" class="color-picker"></div>';
		
     echo (!empty($desc))?' <span class="description">'.$desc.'</span>':'';
		
     echo '</div>';
}

/**
 * Enqueue the colour picker
 */
function enqueue_colour_picker(){
                wp_enqueue_script(
			'artus-field-color-js', 
			'Field_Color.js', 
			array('jquery', 'farbtastic'),
			time(),
			true
		);	

		wp_enqueue_style( 'farbtastic' );
}

The above code will use the add_settings_field() function to create a field of displaying the colour picker. Within the function we add an action to attach a function onto the admin_enqueue_scripts to add javascript to the page. This javascript will load the inbuilt default script of farbtastic, the colour picker. We also load a Javascript file called Field_Color.js which we will use to attach elements to the farbtastic jQuery function. Now create a Javascript file and add the following code.


jQuery(document).ready(function(){
	
	var $color_inputs = jQuery('input.popup-colorpicker');

	$color_inputs.each(function(){
		var $input = jQuery(this);
		var $pickerId = "#" + jQuery(this).attr('id') + "picker";

		jQuery($pickerId).hide();
		jQuery($pickerId).farbtastic($input);
		jQuery($input).click(function(){jQuery($pickerId).slideToggle()});

	});
});

This searches for all elements with the class popup-colorpicker, with these items we can attach the farbtastic function to display the colour picker.