Skip to:
Content
Pages
Categories
Search
Top
Bottom

Search Results for 'hide xprofile fields'

Viewing 25 results - 51 through 75 (of 93 total)
  • Author
    Search Results
  • modemlooper
    Moderator

    Just read you don’t want to edit home.php. There isn’t a filter for privacy like there is with messages for showing profile sections. Messages and xprofile fields has logic for output and can be filtered but the actual page needs a code edit.

    #88998

    In reply to: Hide profile field

    r-a-y
    Keymaster

    Tested just now, works for me.
    You need to use the profile id #.

    Go to your profile field setup and check the ID by putting your mouse over the “Edit” field. The ID # is field_id.
    For example, “Name” is 1.

    Either that or go to your DB and manually look up the profile field id in the wp_bp_xprofile_fields table.

    You can also use any profile template tag and do your conditional.

    If you wanted to use the profile name, use bp_get_the_profile_field_name() instead.

    peterverkooijen
    Participant

    @thelandman, in my solution I use javascript to generate the username from the weird semi-optional xprofile fullname field, hide the username field on the form, use the email login plugin so members don’t need the username to log in, add more custom code to synchronize the fullname and the fullname-derived username to all the various similar fields in the database, etc. It’s messy, but somewhat workable.

    The point is that it should not be that hard. Using full names, Firstname Lastname, should be part of the core. Seeing that none of this is fixed in 1.2+ and probably will never be fixed, I have no plans to upgrade to newer versions of Buddypress and will continue developing my version as a fork, more suited for professional and business use. If anyone is interested in working with me on that, please contact me directly.

    Gene53
    Participant

    Done, thanks again.

    Gene

    jivany
    Participant

    So it works? Tag the topic as resolved. ;)

    Gene53
    Participant

    Believe it or not, it didn’t work when I changed Username for 1 but it did when I added ,3 (still don’t know what the 3 is for, LOL).

    Does that mean I don’t really need the funky function and simply change the <input type=”hidden” … > in edit.php or should I just leave things as they are now that it seems to work?

    EDIT: when I added ,3, I couldn’t change the value of the next field and “1” still gives me the error…

    EDIT 2: ROFLOL, it didn’t work because I omitted the , (colon) after the 1. Now everything seems to work.

    Thanks again, I really appreciate your help.

    Gene

    jivany
    Participant

    It becomes just string manipulation. Create a new function (my_funky_function) and do something like this:

    function my_funky_function() {
    echo str_replace( "username","", bp_get_the_profile_group_field_ids() );
    }

    Then replace the bp_the_profile_group_field_ids() call in edit.php (in your child theme of course) with my_funky_function().

    I think that will work but it’s not tested. ;)

    Edit:

    Oh, sorry, I’m sort of wrong. This is what I get in my edit.php form in the HTML:

    <input type="hidden" name="field_ids" id="field_ids" value="1,3" />

    Field_id 1 is the Username for me. You just need to filter that out so the str_replace call should be “1,” instead of “username”.

    Gene53
    Participant

    Makes sense but I haven’t a clue on how I could code such a function… That’s way above my programming skills.

    jivany
    Participant

    <input type="hidden" name="field_ids" id="field_ids" value="<?php bp_the_profile_group_field_ids() ?>" />

    That line is your problem. Well, more specifically, the call to bp_the_profile_group_field_ids() which creates a list of the expected field names.

    Unfortunately it doesn’t have a filter so you’d have to clone and own the function into your functions.php file and manually filter out the “username” field from the string that gets generated.

    Make sense?

    Gene53
    Participant

    Hey jivany,

    I was sort of wondering if that would happen

    LOL, it sure did so I’m wondering if there was a workaround, such as the field not being visible (or non editable) but would still send the name field when the form is submitted.

    Darn, I miss the good old days (phpBB 1 and 2) when you only had to comment out code in templates…

    jivany
    Participant

    Oh, nope, it probably means that the code is actually checking that the field ‘username’ should be getting updated. I was sort of wondering if that would happen. ;)

    Gene53
    Participant

    Oops, spoke too soon, if I edit anything in group 1 (where Username is hidden), I get “Please make sure you fill in all required fields in this profile field group before saving” even though everything has been filled.

    Oh well, back to the drawing board. Maybe the code wasn’t inserted in the right place and/or I have to add HTML but I haven’t a clue as to what I should add.

    Gene53
    Participant

    @jivany Wow, thanks, I simply added:

    <?php if ( 'Username' == bp_get_the_profile_field_name() ) : ?>

    <?php else : ?>

    under:

    <?php if ( 'textbox' == bp_get_the_profile_field_type() ) : ?>

    inserted a endif where you indicated, didn’t do any HTML formatting and the Username field is now hidden.

    Thanks again!

    Gene

    jivany
    Participant

    Well, yes, you should be able to make the username field non-editable. I would assume the username field is a “textbox” type. In edit.php, you should be able to just filter out the username field and not create a form “textbox” HTML element. So, in member/single/profile/edit.php around line 21, add in a check something like:

    <?php if ( 'username' == bp_get_the_profile_field_name() ) : ?>
    // Just display the Username with bp_the_profile_field_name() and add HTML to style how you want.
    <?php else : ?>
    // Do the existing <label... code on line 23 and 24
    <?php endif; ?>

    Now, a creative user might still be able to circumvent your little hack and submit their change directly to the form. I see a nonce being used though in the form so that might not be too much of a concern after all.

    Gene53
    Participant

    Thanks guys, I’ll drop the idea being that it’s way too complicated for what it’s worth.

    My reason for having the mandatory name field only (which I renamed Username) in group 1 is that the site I’m working on is username only and thanks to Brajesh Singh’s modifications in edit.php, group 1 can’t be edited by the users.

    So, my only alternative is to restore the original edit.php file, move the group 2 fields to group 1 so they may be filled out during registration but I wonder if there would be a simple way to hide or “gray out” the name field in edit.php so the user can’t change it.

    Paul Wong-Gibbs
    Keymaster

    So, yes, by default, the register page only shows group 1 (the “base” group). You only retrieve one group via the profile_group_id= parameter in the bp_has_profile() call.

    So, by default, this happens:

    What I’m trying to accomplish is to hide groups 3 and 4 on the registration page not to overwhelm the user with a bunch of fields to fill out during sign-up, those fields can be filled out once the user has activated her/his account via “edit profile”.

    There have been other threads on the forum regarding showing more than one profile group on the registration page; I found several, but take a look at https://buddypress.org/forums/topic/all-fields-for-registration. It’s probably going to be really difficult to implement unless you have a decent understanding of PHP.

    jivany
    Participant

    Nope, I don’t think so. I was thinking you could remove the ‘profile_group_id=1’ arg from bp_has_profile but that doesn’t seem to allow the registration page to show more groups. I guess it appears that the only “required” fields for registration are the required ones in the Base group.

    Might be worth opening a ticket on this one to see if that is the expect behaviour. Alternatively, ping R-a-y or DJPaul and see if they know.

    Gene53
    Participant

    Nope, only getting group 1. I wonder if:

    <?php if ( function_exists( 'bp_has_profile' ) ) : if ( bp_has_profile( 'profile_group_id=1' ) ) : while ( bp_profile_groups() ) : bp_the_profile_group(); ?>

    can be modified to fetch group 2 also.

    LOL, this is driving me nuts…

    jivany
    Participant

    No worries. The code I gave should display everything except group 3 & 4. Sorry, I think I said it backwards in the previous post.

    That said, even without the code, I’m only getting group 1 showing up on the registration page so I’m not really sure what’s going on in register.php now. ;)

    Gene53
    Participant

    Darn, you’re right, I restored an original version of register.php and only group 1 shows. I’ll go and try your code to see if I can get group 2 to load.

    Sorry about that…

    jivany
    Participant

    OK, now I’m scratching my head.

    When I create a second group, even if I tag the fields in the second group as “required”, they don’t show up on the register page (the bp-default version). The second group only shows up on the user’s profile page where they can edit the fields. They are tagged as “required” but nothing seems to force the user to fill them out.

    I’m confused now as to what you’re seeing and/or trying to do.

    Gene53
    Participant

    Oops,sorry, I think there was a misunderstanding, bp-register loads all groups by default, what I’m trying to accomplish is to hide (or not load) groups 3 and 4 so the user can fill those optional field groups once they’ve activated their accounts..

    jivany
    Participant

    OK. I’m thinking you can do something like this. Find this part of the file in register.php:

    <?php /***** Extra Profile Details ******/ ?>

    <?php if ( bp_is_active( 'xprofile' ) ) : ?>
    <div class="register-section" id="profile-details-section">

    <h4><?php _e( 'Profile Details', 'buddypress' ) ?></h4>

    <?php /* Use the profile field loop to render input fields for the 'base' profile field group */ ?>
    <?php if ( function_exists( 'bp_has_profile' ) ) : if ( bp_has_profile( 'profile_group_id=1' ) ) : while ( bp_profile_groups() ) : bp_the_profile_group(); ?>

    <?php while ( bp_profile_fields() ) : bp_the_profile_field(); ?>

    At this point, add in a line like:

    if( (bp_the_profile_group != "3") || (bp_the_profile_group != "4") ) :

    Then go down to this part of the file:

    <?php endwhile; ?>

    <input type="hidden" name="signup_profile_field_ids" id="signup_profile_field_ids" value="<?php bp_the_profile_group_field_ids() ?>" />

    <?php endwhile; endif; endif; ?>

    </div><!-- #profile-details-section -->

    Before the first endwhile line, insert this:

    <?php endif; ?>

    I *think* that should spit out groups 3 & 4 (assuming you have groups 3 & 4 defined in your profile groups). You might need to add in group “1” also to get the Base. The only part I’m not sure about right now is if the number need to be in double quotes or just bare. So it might be:

    if( (bp_the_profile_group != 3) || (bp_the_profile_group != 4) ) :

    I think. ;)

    Gene53
    Participant

    @jivany, I’ve been playing around with this all afternoon but to no avail (learning PHP as I go along), either group no. 2 shows up but group 1 (name) doesn’t, or group 1 and only 1 field out of 6 from group 2 or neither groups 1 and 2.

    I give up, LOL

    Thanks,

    Gene

    Gene53
    Participant

    Thanks, I’ll give it a whirl tomorrow.

Viewing 25 results - 51 through 75 (of 93 total)
Skip to toolbar