Search Results for 'hide xprofile fields'
-
AuthorSearch Results
-
November 27, 2011 at 7:41 pm #125090
modemlooper
ModeratorJust 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.
August 13, 2010 at 6:08 pm #88998In reply to: Hide profile field
r-a-y
KeymasterTested 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.
May 23, 2010 at 3:18 pm #79336peterverkooijen
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.
April 16, 2010 at 12:26 am #73740Gene53
ParticipantDone, thanks again.
Gene
April 16, 2010 at 12:03 am #73736jivany
ParticipantSo it works? Tag the topic as resolved.
April 15, 2010 at 2:50 am #73585Gene53
ParticipantBelieve 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
April 15, 2010 at 2:04 am #73575jivany
ParticipantIt 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”.
April 15, 2010 at 1:54 am #73570Gene53
ParticipantMakes sense but I haven’t a clue on how I could code such a function… That’s way above my programming skills.
April 15, 2010 at 1:41 am #73567jivany
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?
April 15, 2010 at 1:28 am #73565Gene53
ParticipantHey 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…
April 15, 2010 at 1:20 am #73564jivany
ParticipantOh, 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.
April 14, 2010 at 2:34 am #73449Gene53
ParticipantOops, 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.
April 14, 2010 at 1:49 am #73445Gene53
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
April 14, 2010 at 12:28 am #73436jivany
ParticipantWell, 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.
April 13, 2010 at 7:11 pm #73344Gene53
ParticipantThanks 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.
April 13, 2010 at 11:38 am #73281Paul Wong-Gibbs
KeymasterSo, 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.
April 13, 2010 at 11:18 am #73280jivany
ParticipantNope, 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.
April 13, 2010 at 2:24 am #73233Gene53
ParticipantNope, 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…
April 13, 2010 at 2:09 am #73229jivany
ParticipantNo 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.
April 13, 2010 at 2:04 am #73228Gene53
ParticipantDarn, 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…
April 13, 2010 at 1:24 am #73217jivany
ParticipantOK, 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.
April 13, 2010 at 12:39 am #73210Gene53
ParticipantOops,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..
April 12, 2010 at 10:54 pm #73202jivany
ParticipantOK. 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.
April 12, 2010 at 9:59 pm #73193Gene53
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
April 12, 2010 at 3:00 am #72806Gene53
ParticipantThanks, I’ll give it a whirl tomorrow.
-
AuthorSearch Results