How add options to your WordPress 2.7 dashboard widgets

Well, in this article, I assume you have read the WP Engineer's excellent post Add WordPress Dashboard Widgets, because his code will be our start point.

So, we have this code:

 
 
// Load up the localization file if we're using WordPress in a different language
// Place it in this plugin's folder and name it "MainFunction-[value in wp-config].mo"
load_plugin_textdomain( 'MainFunction', '/wp-content/plugins/MainFunction' );
 
/**
 * Content of Dashboard-Widget
 */
function MainFunction() {
	echo 'Test Add Dashboard-Widget';
}
 
/**
 * add Dashboard Widget via function wp_add_dashboard_widget()
 */
function MainFunction_Init() {
	wp_add_dashboard_widget( 'MainFunction', __( 'MainFunction Widget Title' ), 'MainFunction' );
}
 
/**
 * use hook, to integrate new widget
 */
add_action('wp_dashboard_setup', 'MainFunction_Init');
 

OK, now, remenber the wp_add_dashboard_widget function?

function wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_callback = null )

The $control_callback parameter (obviously optional) is our main target. It gives the 'Configure' option to our spiffy widget.
So, we need to add a 4th parameter to wp_add_dashboard_widget:

wp_add_dashboard_widget( 'MainFunction', __( 'MainFunction Widget Title' ), 'MainFunction', 'MainFunction_Setup');

The MainFunction_Setup function handles two things: the options (set the default options, recolect new values, etc) and the option's presentation (i.e. the HTML part)

So, here goes the code:

 
 
function MainFunction_Options() {
	$defaults = array( 'items' => 5, 'boolean' => 1);
	if ( ( !$options = get_option( 'MainFunction' ) ) || !is_array($options) )
		$options = array();
	return array_merge( $defaults, $options );
}
 
function MainFunction_Setup() {
 
	$options = MainFunction_Options();
 
	if ( 'post' == strtolower($_SERVER['REQUEST_METHOD']) && isset( $_POST['widget_id'] ) && 'MainFunction' == $_POST['widget_id'] ) {
		foreach ( array( 'items', 'boolean' ) as $key )
				$options[$key] = $_POST[$key];
		update_option( 'MainFunction', $options );
	}
 
?>
 
 
		<label for="items"><PHP _e('How many items?', 'MainFunction' ); ?>
<select id="items" name="items">
				<PHP
					for ( $i = 5; $i <= 20; $i = $i + 1 )
						echo "
<option value='$i'" . ( $options['items'] == $i ? " selected='selected'" : '' ) . ">$i</option>
 
";
				?>
			</select>
 
		</label>
 
 
 
		<label for="boolean">
<input id="boolean" name="boolean" type="checkbox" value="1"<PHP if ( 1 == $options['boolean'] ) echo ' checked="checked"'; ?> />
			<PHP _e('Activate boolean?', 'MainFunction' ); ?>
		</label>
 
 
<PHP
 }
 

As you can see, MainFunction_Options puts the default values (if necessary, of course) and MainFunction_Setup show the current values and let change them. You can merge this two, of course...

Now, we have to get the options and use them in our MainFunction function. Change MainFunction like that:

 
/**
 * Content of Dashboard-Widget
 */
function MainFunction() {
 
        $widget_options = MainFunction_Options();
 
	echo 'Test Add Dashboard-Widget';
	echo "You have selected $widget_options['items'] items";
	echo "boolean is $widget_options['boolean']";
 
}
 

The complete code here:

 
<PHP
 
// Load up the localization file if we're using WordPress in a different language
// Place it in this plugin's folder and name it "MainFunction-[value in wp-config].mo"
load_plugin_textdomain( 'MainFunction', '/wp-content/plugins/MainFunction' );
 
/**
 * Content of Dashboard-Widget
 */
function MainFunction() {
        $widget_options = MainFunction_Options();
 
	echo 'Test Add Dashboard-Widget';
	echo "You have selected $widget_options['items'] items";
	echo "boolean is $widget_options['boolean']";
}
 
/**
 * add Dashboard Widget via function wp_add_dashboard_widget()
 */
function MainFunction_Init() {
	wp_add_dashboard_widget( 'MainFunction', __( 'MainFunction Widget Title' ), 'MainFunction' , 'MainFunction_Setup' );
}
 
function MainFunction_Options() {
	$defaults = array( 'items' => 5, 'boolean' => 1);
	if ( ( !$options = get_option( 'MainFunction' ) ) || !is_array($options) )
		$options = array();
	return array_merge( $defaults, $options );
}
 
function MainFunction_Setup() {
 
	$options = MainFunction_Options();
 
	if ( 'post' == strtolower($_SERVER['REQUEST_METHOD']) && isset( $_POST['widget_id'] ) && 'MainFunction' == $_POST['widget_id'] ) {
		foreach ( array( 'items', 'boolean' ) as $key )
				$options[$key] = $_POST[$key];
		update_option( 'MainFunction', $options );
	}
 
?>
 
 
		<label for="items"><PHP _e('How many items?', 'MainFunction' ); ?>
<select id="items" name="items">
				<PHP
					for ( $i = 5; $i <= 20; $i = $i + 1 )
						echo "
<option value='$i'" . ( $options['items'] == $i ? " selected='selected'" : '' ) . ">$i</option>
 
";
				?>
			</select>
 
		</label>
 
 
 
		<label for="boolean">
<input id="boolean" name="boolean" type="checkbox" value="1"<PHP if ( 1 == $options['boolean'] ) echo ' checked="checked"'; ?> />
			<PHP _e('Activate boolean?', 'MainFunction' ); ?>
		</label>
 
 
<PHP
 }
 
/**
 * use hook, to integrate new widget
 */
add_action('wp_dashboard_setup', 'MainFunction_Init');
 
?>
 

You can view a PHPS version (without PHP crippled tags) here.


Más Dashboards Widgets

Aparte del Dashboard: Recent Comments Extended, y con el propósito de dejar mi Dashboard como en su época pre-2.5, he creado un par más:

La verdad es que son muy simples, y dude en si liberarlos o no, pero como no hacen daño a nadie e igual le son útiles a alguien, pues ahí estan...


Oportunidades

Al iniciarse en la fotografía a un nivel más profesional es recomendable comprar equipo de segunda mano, hasta que uno está seguro de elegir la cámara que más le conviene. Son muchas las páginas donde se puede comprar cámaras de segunda mano, por ejemplo Mundoanuncio.com...

Archivos

Últimos Comentarios

  1. G

    Prior to closing, when I simply raise the real antiquing Gol Diamond, Antique silver is fairly typical in the industry today and is the effective exercise of the completion of a ne

    woodhzan @ How add options to your WordPress 2.7…
  2. G

    me encanta harry ya vi todas las peliculas pero ahora quiero leer los libros y no c como descargarlos alguien me puede ayudar mi correo es karla85@hotmail.es o al elyoroz@gmail.com

    Karla @ Harry Potter y el Misterio del Prínci…
  3. G

    qjvcksjdl, Sarasota Tax Attorney, BrXmOMJ, [url=http://flooper.info/]Sarasota Tax Lawyer[/url], iMylqsG, http://flooper.info/ Sara

    Sarasota Tax Lawyer @ Twitter (y ahora Buzz): El basurero di…
  4. G

    canada internet pharmacy http://sundrugstore.net/products/albendazole.htm pharmacy medical pda software

    Sloroodome @ RSS Stream
  5. G