Adding Dynamic Profile Link to Main Menu Item
-
Buddypress = 1.5
Theme = Custom CommunityIn the wordpress menu I would like to add a link to the buddypress user profile. I would like to create a new tab on my main menu called “My Profile” that redirects to the unique buddypress user profile page. My problem is that these links are dynamic based on the username.
What I would like to achieve:
–>User1 logs in and clicks on http://website.com/my-profile and is redirected to http://website.com/members/user1/profile/–>User2 logs in and clicks on http://website.com/my-profile and is redirected to http://website.com/members/user2/profile/
I’ve searched everywhere and can’t find a solution to this vexing problem. Your help is greatly appreciated.
Thanks,
-John
-
Add this to your theme’s functions.php file
http://pastebin.com/HSpJNLyVThank you for taking the time mercime.
Do I need to tweak this code in any way before adding it to the functions.php file.
Thanks again
-John
Just make a backup copy of your theme’s functions.php file. That way, if you added the code where you shouldn’t, you can always revert to the original code from your backup.
Hello Mercime,
I’m not sure where to add the code in the functions.php. Can I just add it to the bottom of the file?
I just want to make sure that I explained myself correctly, this time with an example of my actual site.
I created a page http://impartoo.com/my-profile/ and added a main menu item called “My Profile”.
What I would like to achieve:
ā>User1 logs in and clicks on http://impartoo.com/my-profile and is redirected to http://impartoo.com/members/user1/profile/ā>User2 logs in and clicks on http://impartoo.com/my-profile and is redirected to http://impartoo.com/members/user2/profile/
Thank you for your patience.
-John
Delete the new page you created since it’s not going to work that way. The code will create a link in the navigation menu for logged in users only and clicking on the link will direct the user to his/her respective profile page.
== Iām not sure where to add the code in the functions.php. ==
At the bottom of the functions.php file :
}
?>
Add code in between:}
// Filter wp_nav_menu() to add profile link
add_filter( 'wp_nav_menu_items', 'my_nav_menu_profile_link' );
function my_nav_menu_profile_link($menu) {
if (!is_user_logged_in())
return $menu;
else
$profilelink = '' . __('My Profile', 'buddypress' ) . '
';
$menu = $menu . $profilelink;
return $menu;
}
?>This post greatly helped me! However I am trying to figure out one other thing, how would you create a sub menu item i.e. a dropdown menu doing it this way? I essentially want to take everything from my admin bar and put it in a dropdown list in my main nav menu
@evolvedesign, please start a new topic next time. There’s a plugin for those using the bp-default or child theme thereof https://wordpress.org/extend/plugins/buddypress-profile-menu/
Mercime,
1. I deleted the new page http://impartoo.com/my-profile/, it’s associated menu item “My Profile” was also deleted.
2. Added the code in functions.php (the file was saved successfully without throwing an error).I’m not seeing that the code created a link in the navigation menu when logging in with a user. There is no menu item tab called “My Profile”. Do I need to create a new menu item called “My Profile” in the main navigation menu? If so, how do I do this without creating an associated page?
Can you please take a look, here is a test user for my site: http://impartoo.com
username = beenthere
pass = testThanks again,
-John
Do you think I misplaced the code in functions.php ? Please help, I need this resolved.
@wpissues I just tested the code in Custom Community Version 1.8.9.1 from the WP Theme Repo and it’s working fine. Even showed up in both custom menus. If you still haven’t fixed this, post all code you currently have in your functions.php file in pastebin.com
Hi, Mercime, I’m having the same issue with my site. puclpodcast.com/newfinal
I have pasted my function file in pastebin though so that you may diagnose the problem.
http://pastebin.com/jXgvLGJB
Thanks.@thadman the code won’t work with your theme. You should contact theme developer (or use forums of iblogPro users) who has coded own custom menu and therefore is not using wp_nav_menu function directly to call the menu.
Ok Thanks.
I am using Custom Community Version 1.8.9.1 though, I’m switching from iBlogPro because I wanted to start using buddypress. The site at the front is an iBlogPro Theme but that function file is from the custom community theme.http://www.puclpodcast.com/newfinal? Is a custom community theme and that function file does have a a call for wp_nav_menu.
@thadman as I mentioned above, the code works in Custom Community theme per my test.
Posted in pastebin.com => functions.php file of Custom Community with the dynamic profile link at the bottom of the file. http://pastebin.com/cagpd9Mc
@mercime, thanks again for following up on this.
I pasted my functions.php code in pastebin.com , saved as “DynamicProfile-061812”
for the time being I installed the following plugin “BuddyPress login redirect” to partially solve my issue. This plugin redirects the user to their personal profile page but I still need the menu item to appear as well.
-John
So glad I cam across this code edit for “my profile” added to the menu. My only question is how would I get this menu item moved to the first spot instead of the last spot.
Thank you@mercime is there a code to move the new “my profile” menu item to the first position (to the right of “home”)?
I have two navigation menus, is there a way to specify which navigation menu it goes to and is there a way to place in front?
@kissandim didn’t get the notification. Just in case you haven’t found the solution yet, just move $profilelink before the $menu, therefore the last three lines should look like this:
$menu = $profilelink . $menu; return $menu; }
@cpinsd if you have more than one custom menu in your theme, find out the ‘theme_location’=>’???’ of that specific wp_nav_menu. For example, the location is mamamia then the code would be
// Filter wp_nav_menu() to add profile link in a specific custom menu e.g. mamamia function mme_nav_menu_profile_link($menu, $args) { if( is_user_logged_in() && $args->theme_location == 'mamamia' ){ $profilelink = '<li><a href="' . bp_loggedin_user_domain( '/' ) . '">' . __('My Profile', 'yourtheme') . '</a></li>'; $menu = $menu . $profilelink; } return $menu; } add_filter( 'wp_nav_menu_items', 'mme_nav_menu_profile_links', 10, 2 );
since this is such a requested feature i’ll update the plugin to work with other them locations besides bp-defaults
Thank you @modemlooper I’m sure many users will be delighted by the addition
@mercime that is almost what I need, but now it is before the “home” link. i’d like to move it to the second location directly to the right of home. Thank you in advance for your help
@mercime forget it, I figured out a way around it!Thanks for all your help!!
@kissandim you’re welcome. glad you resolved it on your own
- The topic ‘Adding Dynamic Profile Link to Main Menu Item’ is closed to new replies.