Is there a way to show different content depending on profile fields?
-
For example, using if/then statements, if a member’s favorite color is red, they see sidebar A, and if it’s blue, sidebar B.
I’ve been searching quite a bit and it doesn’t appear that there are buddypress conditional tags for xprofile attributes.
Any ideas? – Thanks!
-
Here’s the code I’m trying to use in my sidebar:
`
sample code
`
Trying to call the loggedin_user_id, but doing to wrong…
`loggedin_user->id) && bp_get_profile_field_data(‘field=783’) === “Yes”) : ?>
sample code
`@gregfielding I forgot where I found this (maybe bp-tricks)
put this in your bp-custom
`//CHECK IF THE ACCT IS CERTAIN ACCT TYPE
function My_Function ($user_id) {
global $bp;
$type_member = xprofile_get_field_data( ‘Color’, $user_id );
if($type_member == ‘Red’) {
return true;
} else {
return false;
}
}`Then to display in sidebar
`
loggedin_user->id)) : ?>
Red SidebarSome other Sidebar
`in the function, where color = your main field heading, I’ve used a dropdown. and Red is one of the drop down items to select from.
I don’t know if it works the same if the field was just a text field. I imagine so.
Thanks @nahummadrid
I think it’s closer but still not working right. It only shows “Some other Sidebar”.
Here’s my code:
`//CHECK IF THE ACCT IS CERTAIN ACCT TYPE
function My_Function ($user_id) {
global $bp;
$type_member = xprofile_get_field_data( ‘Real Estate Industry Professional’, $user_id );
if($type_member == ‘Yes’) {
return true;
} else {
return false;
}
}`I wonder if the issue is that I’m using a checkbox, with the option of “Yes”…
Try using boolean values instead. If you want “Some other sidebar” to display if the box is checked, then the value should be “1”. Worth a try…
`loggedin_user->id)) : ?>
Red Sidebar
`This works though right.
@pcwriter – replacing “Yes” with “1” didn’t work – was that what you meant?
@nahummadrid – yes, that works.I couldn’t figure out how to display something else…
I guess you could create different functions for each type of field
`loggedin_user->id)) : ?>
Red Sidebarloggedin_user->id)) : ?>
Blue Sidebar
`I wish I knew enough about what all is happening in that piece of code. So that I could make it work the way i proposed. otherwise, there will be a blank sidebar for non logged in users and users who don’t have a xprofile field selected corresponding with those requirements.
don’t know what I just did but this seems to work…
`loggedin_user->id) == ‘Yes’) : ?>
Red Sidebar
<?php elseif(is_user_logged_in())>
Another sidebar
`and you want this to look like this
`//CHECK IF THE ACCT IS CERTAIN ACCT TYPE
function My_Function ($user_id) {
global $bp;
$type_member = xprofile_get_field_data( ‘Real Estate Industry Professional’, $user_id );
if($type_member == ‘Yes’) {
return true;}
}`‘if($type_member == ‘Yes’)…`
Either way, even if I create a second function, It isn’t recognizing the profile field.
This seems fishy to me. Is $type_member really the way to call a profile field entry? Or could it be a checkbox issue?
yea there’s prolly an easier way to go about it. I’ve just copied/pasted/refreshed different combinations til something worked. I look forward to seeing something simple to use for stuff like this. hehe
yet another way to do it, i think…
`<?php
global $bp;
$user_id = $bp->loggedin_user->id;
$type_member = xprofile_get_field_data( ‘Real Estate Industry Professional’, $user_id );?><?php if($type_member == 'Yes')>
Yes Sidebar
<?php elseif($type_member == 'No')>
Another Sidebar for this optionSidebar for everyone else
`Looks much cleaner, but still isn’t working. I tried using a radio button and that didn’t work either.
What I’m trying to do should be simple
If you are a professional, you get one sidebar. If you are a civilian, you get another. And I’ve got a checkbox on the registration form.
Thanks for all of your help so far you guys…
Just tested the snippet by @nuhammadrid above with a dropdown select and it works perfectly.
I found this old trac ticket (pre 1.2.6) but maybe checkboxes/radio buttons are stilla bit buggy with xprofile_get_field_data
Oops… forgot the link
https://buddypress.trac.wordpress.org/ticket/2685@pcwriter @johnjamesjacoby
Yup. Bug is definitely still there. Nice find!As a work-around, I wonder if I could use this plugin https://wordpress.org/extend/plugins/buddypress-xprofiles-acl/ to assign roles based on the profile field answer.
Then I could more easily show different sidebars depending on roles.
Not the cleanest way to do it. Has anyone else had trouble with checkboxes?
@gregfielding are you not wanting to use dropdown select for any reason? instead of using checkboxes/radio? Can you have more than one role? If you only need one role per user, why not use dropdown xprofile field and make it required at sign up?
- The topic ‘Is there a way to show different content depending on profile fields?’ is closed to new replies.