0

We need to create custom fields for different roles (at least two), but we must enter these different roles the dashboard.

example: creating a menu item with editor menu with the url: wp-admin/user-new.php?type=editor(for role editor) and wp-admin/user-new.php?type=contributor (for contributor). (this are examples for the custom roles that we have)

Both need to display their custom fields and save them without adding usermeta of the other role in the database (example: the contributor has custom field a,b and c, the editor has d, e and f) we need to save and be able to edit only the custom fields of the corresponding role (registration is not allowed, all users are added from the admin and csv).

Adding Nav Menus For Roles

I coded in functions.php of my childtheme for the custom fields but this isnt the correct way still.

I think i need $_get but i don't know how obtain the url and display other form to specific role

function extra_profile_fields_usuarios( $user ) { ?>

    <h3><?php _e('Campos Extras'); ?></h3>
       <table class="form-table">

          <tr>
             <th><label for="dropdown">País</label></th>
             <td>
             <?php 
             //get dropdown saved value
             $selected = get_the_author_meta( 'campo_pais', $user->ID ); 
             ?>
             <select name="campo_pais" id="campo_pais">
                 <option value="Chile" <?php echo ($selected == "Chile")?  'selected="selected"' : ''; ?>>Chile</option>
             </select>
             <span class="description">Seleccionar País.</span>
             </td>
          </tr>

          <tr>
             <th><label for="dropdown">Idioma</label></th>
             <td>
             <?php 
             //get dropdown saved value
             $selected = get_the_author_meta( 'campo_idioma', $user->ID ); 
             ?>
             <select name="campo_idioma" id="campo_idioma">
                 <option value="Espanol" <?php echo ($selected == "Espanol")?  'selected="selected"' : ''; ?>>Español</option>
             </select>
             <span class="description">Seleccionar Idioma.</span>
             </td>
          </tr>

          <tr>
             <th><label for="dropdown">Zona Horaria</label></th>
             <td>
             <?php 
             //get dropdown saved value
             $selected = get_the_author_meta( 'campo_zona_horaria', $user->ID ); 
             ?>
             <select name="campo_zona_horaria" id="campo_zona_horaria">
                 <option value="-4 Santiago" <?php echo ($selected == "-4 Santiago")?  'selected="selected"' : ''; ?>>-4 Santiago</option>
             </select>
             <span class="description">Seleccionar Zona Horaria.</span>
             </td>
          </tr>

       </table>

    <?php

 }

 // Then we hook the function to "show_user_profile" and "edit_user_profile"

add_action( 'user_new_form', 'extra_profile_fields_usuarios');
 add_action( 'show_user_profile', 'extra_profile_fields_usuarios');
 add_action( 'edit_user_profile', 'extra_profile_fields_usuarios');


 function save_extra_profile_fields_usuarios( $user_id ) {

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

    /* Edit the following lines according to your set fields */
    update_user_meta( $user_id, 'campo_pais', $_POST['campo_pais'] );
   update_user_meta( $user_id, 'campo_idioma', $_POST['campo_idioma'] );
    update_user_meta( $user_id, 'campo_zona_horaria', $_POST['campo_zona_horaria'] );

    /*if ( isset( $_POST['first_name'] ) )
        update_user_meta($user_id, 'first_name', $_POST['first_name']);*/


 }

 add_action( 'user_register', 'save_extra_profile_fields_usuarios');
 add_action( 'personal_options_update', 'save_extra_profile_fields_usuarios' );
 add_action( 'edit_user_profile_update', 'save_extra_profile_fields_usuarios' );


 //////////////////////////////////////
 // Apartado campos extras para el usuario encargado
 //////////////////////////////////////

 function extra_profile_fields_usuario_encargado( $user ) { 

    if ( user_can( $user->ID, 'group_leader') ): ?>

   <h3><?php _e('Información Encargado Colegio'); ?></h3>
    <table class="form-table">
        <tr>
            <th><label for="campo_ciudad">Ciudad</label></th>
            <td>
            <input type="text" name="campo_ciudad" id="campo_ciudad" value="<?php echo esc_attr( get_the_author_meta( 'campo_ciudad', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description">Ingresar ciudad.</span>
            </td>
        </tr>
        <tr>
            <th><label for="campo_tipo_documento">Tipo documento</label></th>
            <td>
            <input type="text" name="campo_tipo_documento" id="campo_tipo_documento" value="<?php echo esc_attr( get_the_author_meta( 'campo_tipo_documento', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description">Ingresar tipo de documento.</span>
            </td>
        </tr>
        <tr>
            <th><label for="campo_nombre_colegio">Nombre Colegio</label></th>
            <td>
            <input type="text" name="campo_nombre_colegio" id="campo_nombre_colegio" value="<?php echo esc_attr( get_the_author_meta( 'campo_nombre_colegio', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description">Ingresar nombre de colegio.</span>
            </td>
        </tr>
        <tr>
            <th><label for="campo_rbd_colegio">RBD Colegio</label></th>
            <td>
            <input type="text" name="campo_rbd_colegio" id="campo_rbd_colegio" value="<?php echo esc_attr( get_the_author_meta( 'campo_rbd_colegio', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description">Ingresar rbd de colegio.</span>
            </td>
        </tr>
    </table>

    <?php endif;

 }

 // Then we hook the function to "show_user_profile" and "edit_user_profile"
 //add_action( 'user_new_form', 'extra_profile_fields_usuario_encargado', 10);
 add_action( 'show_user_profile', 'extra_profile_fields_usuario_encargado', 10 );
 add_action( 'edit_user_profile', 'extra_profile_fields_usuario_encargado', 10 );

 function save_extra_profile_fields_usuario_encargado( $user_id ) {

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

    /* Edit the following lines according to your set fields */
    update_user_meta( $user_id, 'campo_ciudad', $_POST['campo_ciudad'] );
    update_user_meta( $user_id, 'campo_tipo_documento', $_POST['campo_tipo_documento'] );
    update_user_meta( $user_id, 'campo_nombre_colegio', $_POST['campo_nombre_colegio'] );
    update_user_meta( $user_id, 'campo_rbd_colegio', $_POST['campo_rbd_colegio'] );
 }

 add_action( 'personal_options_update', 'save_extra_profile_fields_usuario_encargado' );
 add_action( 'edit_user_profile_update', 'save_extra_profile_fields_usuario_encargado' );



 // Agregar campos usuarios encargados en el user new form

 function extra_profile_fields_usuario_encargado_new_form( $user ) { ?>

   <h3><?php _e('Información Encargado Colegio'); ?></h3>
    <table class="form-table">
        <tr>
            <th><label for="campo_ciudad">Ciudad</label></th>
            <td>
            <input type="text" name="campo_ciudad" id="campo_ciudad" value="<?php echo esc_attr( get_the_author_meta( 'campo_ciudad', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description">Ingresar ciudad.</span>
            </td>
        </tr>
        <tr>
            <th><label for="campo_tipo_documento">Tipo documento</label></th>
            <td>
            <input type="text" name="campo_tipo_documento" id="campo_tipo_documento" value="<?php echo esc_attr( get_the_author_meta( 'campo_tipo_documento', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description">Ingresar tipo de documento.</span>
            </td>
        </tr>
        <tr>
            <th><label for="campo_nombre_colegio">Nombre Colegio</label></th>
            <td>
            <input type="text" name="campo_nombre_colegio" id="campo_nombre_colegio" value="<?php echo esc_attr( get_the_author_meta( 'campo_nombre_colegio', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description">Ingresar nombre de colegio.</span>
            </td>
        </tr>
        <tr>
            <th><label for="campo_rbd_colegio">RBD Colegio</label></th>
            <td>
            <input type="text" name="campo_rbd_colegio" id="campo_rbd_colegio" value="<?php echo esc_attr( get_the_author_meta( 'campo_rbd_colegio', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description">Ingresar rbd de colegio.</span>
            </td>
        </tr>
    </table>

    <?php

 }

 // Then we hook the function to "show_user_profile" and "edit_user_profile"
 add_action( 'user_new_form', 'extra_profile_fields_usuario_encargado_new_form');
 //add_action( 'show_user_profile', 'extra_profile_fields_usuario_encargado', 10 );
 //add_action( 'edit_user_profile', 'extra_profile_fields_usuario_encargado', 10 );

 function save_extra_profile_fields_usuario_encargado_new_form( $user_id ) {

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

    /* Edit the following lines according to your set fields */
    update_user_meta( $user_id, 'campo_ciudad', $_POST['campo_ciudad'] );
    update_user_meta( $user_id, 'campo_tipo_documento', $_POST['campo_tipo_documento'] );
    update_user_meta( $user_id, 'campo_nombre_colegio', $_POST['campo_nombre_colegio'] );
    update_user_meta( $user_id, 'campo_rbd_colegio', $_POST['campo_rbd_colegio'] );
 }

 add_action( 'user_register', 'save_extra_profile_fields_usuario_encargado_new_form');
 add_action( 'personal_options_update', 'save_extra_profile_fields_usuario_encargado_new_form' );
 add_action( 'edit_user_profile_update', 'save_extra_profile_fields_usuario_encargado_new_form' );

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.