Perfil de Usuario / Añadir Campos Personalizados

18 ene 2012, 07:43:32
Vistas: 14.7K
Votos: 3

Hola: Estoy intentando añadir 7 campos personalizados a la página estándar de WordPress wp-admin/profile.php. Hay algunos sitios que sugieren un código simple para hacer esto, por ejemplo:

http://wpengineer.com/2173/custom-fields-wordpress-user-profile/

Pero, quiero poder añadir mis campos personalizados para que aparezcan exactamente debajo del cuadro de "Información Biográfica" y encima del campo de "cambiar contraseña". Todo lo que he leído e intentado coloca los campos personalizados al final de la página, pero yo quiero que aparezcan entre el cuadro de "Información Biográfica" y encima del campo de "cambiar contraseña".

¿Cómo puedo hacer esto? ¿Es posible? ¿Esto implica usar javascript también? Por favor aconsejen. Gracias.

1
Comentarios

La noción de Campos Personalizados describe algo muy diferente en WordPress.

Raphael Raphael
18 ene 2012 12:24:16
Todas las respuestas a la pregunta 4
0

No hay una forma nativa en WordPress para agregar campos entre la biografía del usuario y la contraseña, pero como mencionaste, puedes hacerlo mediante JavaScript. A continuación, se muestra el código que agrega un solo campo como ejemplo para lograr lo mismo.

NOTA: El código siguiente solo muestra los campos pero no procesa ninguna información ni guarda los valores de los campos, ya que esa parte es igual a la descrita en el artículo enlazado en la pregunta.

Agregar los campos

Coloca el siguiente código en tu functions.php para mostrar los campos.

function wpse39285_add_custom_user_profile_fields( $user ) {
?>
    <table id="custom_user_field_table" class="form-table">
        <tr id="custom_user_field_row">
            <th>
                <label for="custom_field"><?php _e('Campo', 'your_textdomain'); ?></label>
            </th>
            <td>
                <input type="text" name="custom_field" id="custom_field" value="<?php echo esc_attr( get_the_author_meta( 'custom_field', $user->ID ) ); ?>" class="regular-text" /><br />
                <span class="description"><?php _e('Por favor ingresa el valor de tu campo personalizado.', 'your_textdomain'); ?></span>
            </td>
        </tr>
    </table>
<?php 
}
add_action( 'show_user_profile', 'wpse39285_add_custom_user_profile_fields' );
add_action( 'edit_user_profile', 'wpse39285_add_custom_user_profile_fields' );

El código anterior colocará tus campos personalizados después de los campos de contraseña.

Mover los campos

El siguiente código inserta un JavaScript en el encabezado del administrador de WordPress solo si el usuario está viendo su propio perfil o un administrador está editando el perfil de otro usuario.

function wpse39285_field_placement_js() {
    $screen = get_current_screen();
    if ( $screen->id != "profile" && $screen->id != "user-edit" ) 
        return;
    ?>
    <script type="text/javascript">
        jQuery(document).ready(function($) {
            field = $('#custom_user_field_row').remove();
            field.insertBefore('#password');
        });
    </script>
    <?php
}
add_action( 'admin_head', 'wpse39285_field_placement_js' );

El JavaScript anterior hará que el campo se mueva entre los campos de contraseña y biografía. En caso de que el usuario esté viendo la página desde un navegador sin JavaScript, los campos no se moverán y aparecerán como lo hacen por defecto.

Campo con navegador con JavaScript habilitado

campo con navegador con javascript habilitado

Campo con navegador sin JavaScript

campo con navegador sin javascript

18 ene 2012 10:54:46
0

Mi consejo es: No trates de engañar/hackear el sistema. Crea contenido donde los desarrolladores principales quieren que lo hagas; la razón por la que quieres tener los campos exactamente ahí probablemente no sea una buena razón para evitar el flujo normal de WordPress.

Utiliza el hook de acción profile_personal_options para añadir una nueva sección para los ajustes que necesites en la página. Esto no solo es técnicamente correcto, sino también más claro para los usuarios (que saben cómo se ve WordPress normalmente).

18 ene 2012 12:22:48
0

Para mí, la respuesta de Hameedullah Khan funcionó bien. Solo hice un pequeño ajuste porque mis nuevos campos rompieron el diseño de la página. Así que en el código jQuery agregué:

jQuery(document).ready(function($) {
            field = $('#custom_user_field_row').remove();
            field.insertBefore('#password');
            $('#custom_user_field_row').wrapAll('<tr><td colspan="2"></td></tr>');
        });

para mantener la tabla alineada.

16 jul 2015 12:20:25
0

Dado que realmente no puedes hacer esto, te recomendaría usar el plugin Theme My Login, un plugin de membresía muy simple que solo creará páginas de "iniciar sesión", "cerrar sesión" y "perfil" que se adaptarán a la personalización de tu tema. Podrás cambiar el orden de los campos como desees en un archivo distinto que puedes agregar en tu tema hijo, así que no tendrás problemas si algo sale mal.

Lo único es que tu perfil ya no será visible en user-edit.php sino en your-profile.php.

16 jul 2016 09:33:18