Desarrollo estratégico de Widgets y Metaboxes

Veamos un ejemplo simple

function add_info_contacto(){
	add_meta_box('info_contacto', 'Información de contacto relacionado', 'info_contacto', 'page', 'side', 'high');
}

function info_contacto(){
	global $post;
	// igualamos la variable $post_id
	$post_id = $post;
	if ( is_object($post_id) ) $post_id = $post_id->ID;

	// obtenemos los valores pos_meta que guardamos a través de este metabox
	// usar '_' antes del nombre permite que no se muestre en el módulo de custom fields
	$direccion = get_post_meta( $post_id, '_direccion', true);
	$comuna = get_post_meta( $post_id, '_comuna', true);
	$ciudad = get_post_meta( $post_id, '_ciudad', true);
	$fono = get_post_meta( $post_id, '_fono', true);

	// imprimimos nuestro formulario
	echo '<div class="inside">';
	echo '<label>Dirección: <input type="text" name="_direccion" value="'.$direccion.'" /></label>';
	echo '<label>Comuna: <input type="text" name="_comuna" value="'.$comuna.'" /></label>';
	echo '<label>Ciudad: <input type="text" name="_ciudad" value="'.$ciudad.'" /></label>';
	echo '<label>Fono: <input type="text" name="_fono" value="'.$fono.'" /></label>';
	wp_nonce_field('info_contacto_save', 'info_contacto_nonce');
	echo '</div>';
}

function save_info_contacto($post_id){
	if ( !wp_verify_nonce( $_POST['info_contacto_nonce'], 'info_contacto_save' ))
		return $post_id;
	if ( !current_user_can( 'edit_post', $post_id ))
		return $post_id;

	if ( $_POST['_direccion'] ) update_post_meta($post_id, '_direccion', $_POST['_direccion']);
	else delete_post_meta($post_id, '_direccion');

	if ( $_POST['_comuna'] ) update_post_meta($post_id, '_comuna', $_POST['_comuna']);
	else delete_post_meta($post_id, '_comuna');

	if ( $_POST['_ciudad'] ) update_post_meta($post_id, '_ciudad', $_POST['_ciudad']);
	else delete_post_meta($post_id, '_ciudad');

	if ( $_POST['_fono'] ) update_post_meta($post_id, '_fono', $_POST['_fono']);
	else delete_post_meta($post_id, '_fono');

}
add_action('add_meta_boxes', 'add_info_contacto');
add_action('save_post', 'save_info_contacto');

Este script genera un metabox para ingresar información de contactos relacionados:

One thought on “Desarrollo estratégico de Widgets y Metaboxes”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>