Campos adicionales personalizados para usuarios en WordPress

Posted: mayo 19th, 2010 | Author: | Filed under: PHP | Comentarios desactivados en Campos adicionales personalizados para usuarios en WordPress

Suiza Traders gestores Broker para fondos de inversion y FOREX.

Muchas veces en nuestro sitio queremos poder agregar campos personalizados para los usuarios. Ya sea un número de facturación, direcciones, tipo de cliente o una cuenta de twitter.

A pesar de que WordPress no trae aún en forma nativa la gestión de campos personalizados para usuarios (en la versión actual, 2.9.2), podemos hacer una pequeña modificación en nuestro archivo functions.php del theme.

Abrimos el archivo mencionado y simplemente agregamos el siguiente código:

<?php
/* Con este bloque mostramos en el admin el campo adicional en el admin */

add_action( ‘show_user_profile’, ‘my_show_extra_profile_fields’ );
add_action( ‘edit_user_profile’, ‘my_show_extra_profile_fields’ );

function my_show_extra_profile_fields( $user ) { ?>

<h3>Datos adicionales</h3>

<table>

<tr>
<th><label for=»escliente»>Es cliente?</label></th>

<td>
Si <input type=»radio» name=»escliente» id=»escliente» value=»si» <?php if (esc_attr( get_the_author_meta( ‘escliente’, $user->ID )) == «si») { ?> checked=»checked» <? } ?> >
No <input type=»radio» name=»escliente» id=»escliente» value=»no» <?php if (esc_attr( get_the_author_meta( ‘escliente’, $user->ID )) == «no») { ?> checked=»checked» <? } ?> >
</td>
</tr>

</table>
<?php } ?>
<?php
/* Este bloque actualiza el campo al guardar los cambios */

add_action( ‘personal_options_update’, ‘my_save_extra_profile_fields’ );
add_action( ‘edit_user_profile_update’, ‘my_save_extra_profile_fields’ );

function my_save_extra_profile_fields( $user_id ) {

if ( !current_user_can( ‘edit_user’, $user_id ) )
return false;

/* Actualizamos cada campo adicional con su ID */
update_usermeta( $user_id, ‘escliente’, $_POST[‘escliente’] );
}
?>

Luego para ver en el sitio público los campos adicionales podemos hacerlo de la siguiente forma:

<?php if ( get_the_author_meta( ‘escliente’ ) ) { ?>
<p> Es cliente: <?php the_author_meta( ‘escliente’ ); ?></p>
<?php }  ?>


Comments are closed.