How to Create your own BuddyPress theme (Part-2)

 Posted in Tutorials 593 days ago Written by: DarrenM
  • Buffer
  •  17
  • Buffer

After completing the 1st part of this guide you should have a theme which looks just as you want it, or is not far off what you aimed for. In this part I’ll show you how to add even more changes to your child theme.

If you haven’t read the previous parts yet I recommend you do so to gain an insight into how to best go about the required steps.

How to Create your own BuddyPress theme (Part-2)

Doing more with your child theme

If you want to make changes to any of your themes files, usually all you have to do is open up that file and edit. Couldn’t be easier. But if you’re using a child theme you don’t have the theme templates there to edit, as you’re using files belonging to another theme. So what do you do?

It’s actually a very simple process. All that’s required for editing a file is for you to copy the file i.e. “header.php” from the parent theme, into your child themes folder and then you can edit what you wish.

An example of something that many people wish to change in their BuddyPress site is the credit links found in the  footer , as many spammers merely search “proudly powered by WordPress and BuddyPress” in Google to find sites using BuddyPress as the quoted text is found in the footer of the default BuddyPress theme.

To remedy this do the following:

In footer.php you’ll find the below code, remove or edit it as you wish

is proudly powered by WordPress and buddypress.org”>BuddyPress

You could remove this code, although leaving a credit link in your footer is the least you can do to thank everyone who works so hard to make sure BuddyPress, and indeed WordPress are as great as they are now.

Every template file you copy over to your child theme folder can be edited as normal, just remember if when you update BuddyPress you may need to edit the file to include any added functionality, although there should be no need to worry about the theme breaking. Remember to try to use your functions.php to add extra content, instead of copying over the file if you’re only adding a few small pieces of code, refer to the previous guide if you’re stuck!

Making a normal WordPress theme BuddyPress compatible

Making a child theme using the default BuddyPress theme as the parent theme is great and not too difficult when you know what you have to do, but if you already have a working WordPress theme you mightn’t want to go through the whole process of making a child theme from scratch. I’ll show you how to make your WordPress theme work with BuddyPress in this next section.

For this tutorial I’m going to add BuddyPress support to the new default WordPress theme Twentyten (Requires WordPress 3 and up).

Note: In the interests of future proofing my work, I’m choosing to make a child theme and not edit any of the Twentyten’s actual code.

To make life easier we’ll use a plugin by Andy, the developer of BuddyPress to do as much of this work as possible for us!  I’ll show you how to make your theme independent of the plugin later in the guide.

Download the plugin BuddyPress Template Pack and install it.

Go into “Appearance” then “BP  Compatibility”  you’ll now be at the start of the setup menu for the BuddyPress Template Pack.

By following the on-screen steps your theme should be working well with BuddyPress. As it says on the plugins page “Once you are finished, your existing WordPress theme will be able to manage and display all BuddyPress pages and content.”

What the plugin does is copy the special BuddyPress folder and files into your theme.

The BuddyBar will now be able to display throughout your site.

All the special sections that BuddyPress adds to your site will also work, although no navigation will be visible to these places except any links found in the BuddyBar.

This is because BP Template Pack doesn’t edit any of your theme files. Which is great if you change your mind about BuddyPress, but if you want to use it you’ll need to edit these files yourself.

If you’re reading this and are using WordPress 3, then you could create the links using the new menu feature. Alternatively you’ll need to add the following code for the navigation links.

<ul id="nav">
				php if ( bp_is_front_page() ) : ?> class="selected"<!--?php endif; ?-->>
					<a href="<?<span class=">php echo site_url() ?>" title="<!--?php _e( 'Home', 'buddypress' ) ?-->"><!--?php _e( 'Home', 'buddypress' ) ?--></a>
				</li>

				<!--?<span class="hiddenSpellError" pre=""-->php if ( 'activity' != bp_dtheme_page_on_front() && bp_is_active( 'activity' ) ) : ?>
					php if ( bp_is_page( BP_ACTIVITY_SLUG ) ) : ?> class="selected"<!--?php endif; ?-->>
						<a href="<?<span class=">php echo site_url() ?>/<!--?php echo BP_ACTIVITY_SLUG ?-->/" title="<!--?php _e( 'Activity', 'buddypress' ) ?-->"><!--?php _e( 'Activity', 'buddypress' ) ?--></a>
					</li>
				<!--?<span class="hiddenSpellError" pre=""-->php endif; ?>

				php if ( bp_is_page( BP_MEMBERS_SLUG ) || bp_is_member() ) : ?> class="selected"<!--?php endif; ?-->>
					<a href="<?<span class=">php echo site_url() ?>/<!--?php echo BP_MEMBERS_SLUG ?-->/" title="<!--?php _e( 'Members', 'buddypress' ) ?-->"><!--?php _e( 'Members', 'buddypress' ) ?--></a>
				</li>

				<!--?<span class="hiddenSpellError" pre=""-->php if ( bp_is_active( 'groups' ) ) : ?>
					php if ( bp_is_page( BP_GROUPS_SLUG ) || bp_is_group() ) : ?> class="selected"<!--?php endif; ?-->>
						<a href="<?<span class=">php echo site_url() ?>/<!--?php echo BP_GROUPS_SLUG ?-->/" title="<!--?php _e( 'Groups', 'buddypress' ) ?-->"><!--?php _e( 'Groups', 'buddypress' ) ?--></a>
					</li>

					<!--?<span class="hiddenSpellError" pre=""-->php if ( bp_is_active( 'forums' ) && ( function_exists( 'bp_forums_is_installed_correctly' ) && !(int) bp_get_option( 'bp-disable-forum-directory' ) ) && bp_forums_is_installed_correctly() ) : ?>
						php if ( bp_is_page( BP_FORUMS_SLUG ) ) : ?> class="selected"<!--?php endif; ?-->>
							<a href="<?<span class=">php echo site_url() ?>/<!--?php echo BP_FORUMS_SLUG ?-->/" title="<!--?php _e( 'Forums', 'buddypress' ) ?-->"><!--?php _e( 'Forums', 'buddypress' ) ?--></a>
						</li>
					<!--?<span class="hiddenSpellError" pre=""-->php endif; ?>
				<!--?<span class="hiddenSpellError" pre=""-->php endif; ?>

				<!--?<span class="hiddenSpellError" pre=""-->php if ( bp_is_active( 'blogs' ) && bp_core_is_multisite() ) : ?>
					php if ( bp_is_page( BP_BLOGS_SLUG ) ) : ?> class="selected"<!--?php endif; ?-->>
						<a href="<?<span class=">php echo site_url() ?>/<!--?php echo BP_BLOGS_SLUG ?-->/" title="<!--?php _e( 'Blogs', 'buddypress' ) ?-->"><!--?php _e( 'Blogs', 'buddypress' ) ?--></a>
					</li>
				<!--?<span class="hiddenSpellError" pre=""-->php endif; ?>

				<!--?<span class="hiddenSpellError" pre=""-->php wp_list_pages( 'title_li=&depth=1&exclude=' . bp_dtheme_page_on_front() ); ?>

				<!--?<span class="hiddenSpellError" pre=""-->php do_action( 'bp_nav_items' ); ?>
			</ul><!-- #nav -->

There are somethings you’ll need to edit to make sure your theme is working as you want it to with BuddyPress,  this includes

  • The Title tag
  • The homepage
  • The footer credit link
  • The css of certain areas which may not be loading correctly.
  • RSS activity Link

To ensure your theme will still work if you disable BuddyPress we will be using the” if function exists”  tag in php when adding BuddyPress specific code.

Title Tag

The  <title> tag , to show the correct title information BuddyPress requires.

BuddyPress requires the following code to show the correct title tags.

We can add this code as shown below

Homepage

As I’ve shown in the previous Part to this guide adding the Activity to the homepage is very easy, for this example I’m going to do this to Twentyten, although the homepage is working perfectly well as it is, it’s a matter of choice whether you change the homepage or not.

Although the Activity Loop can merely be pasted into your index.php inside the div you wish, as Twentyten keeps its loop in a separate file I’ll do the same when adding the activity loop.

All this requires is copying the activity loop into a file named loop-activity.php, you can replace activity with any name you wish.  Save the file in the themes folder.

Next open up index.php on line 26 you’ll see the code where the main loop is added.

get_template_part( 'loop', 'index' );

You can either remove this code replacing it with

get_template_part( 'loop', 'activity' );

or add it above or below the code. The activity should now be working on your homepage, although you may need to edit the css for it to display correctly. In Twentyten we have no need to.

Removing the theme Warning

WordPress will display a warning asking you to use a BuddyPress compatible theme until you add BuddyPress as a tag to the theme.

To do this open up you r themes style.css and near the top you should see a line with tags, such as the following (taken from Twentyten)


/*

Theme Name: Twenty Ten

Theme URI: http://wordpress.org/

Description: The 2010 default theme for WordPress.

Author: the WordPress team

Version: 1.0

Tags: black, blue, white, two-columns, fixed-width, custom-header, custom-background, threaded-comments, sticky-post, translation-ready, microformats, rtl-language-support, editor-style

*/

Add BuddyPress as a tag and the warning will go away.

Removing the need for BP Template Pack

If you don’t want to depend on a plugin for your theme to work, some people do have reasons for this, although as Andy( the BuddyPress Core Developer) is the developer of BP Template Pack, I don’t think you have to worry too much!  None the less here is how to make your theme independent of The BP Template Pack.

Deactivate BP Template Pack and you’ll notice that the site still loads, although bits of the site are all over the place! Don’t fret though we’ll have that sorted in a few moments.

By referring to the previous guide you should be able to add the css from admin.css and default.css

Theming for BuddyPress isn’t as different and as difficult as some people think, once you follow a few simple guidelines it’s no harder than normal WordPress theme development. I hope now that you know this you’ll start work on a BuddyPress theme yourself.

If you have any queries or need help with your theme let me know in the comments, I’d be more than happy to help!

 Did you enjoy this article and found it useful?

Article was created by

7

Articles


I'm Darren ,A teenager living in Ireland.I run a few different sites around the web, zomghow.com being my newest addition Connect with me on twitter. Look forward to hearing form you!
Free Website
 

 17 Brilliant Comments - Join Discussion Now!

  • Musuf

    Posted 16 days ago
    17

    Very useful and informative article
    please keep it up

    how to create

    Reply
  • librezine

    Posted 74 days ago
    16

    It’s good to make your own template, do not try free unknown templates, it may contains shell or virus to attack to host.

    Reply
  • Rebeca

    Posted 85 days ago
    15

    Now I can figure out the logistics and edit/create regular buddypress themes just fine!

    Reply
  • Haj hosszabbitas mesterfokon

    Posted 165 days ago
    14

    Great post, really inspired me.

    Reply
  • CindyN

    Posted 261 days ago
    13

    Hi, I’m playing around with integrating BuddyPress with an existing template that I’ve already done a lot of work with.

    I’ve added the BuddyPress and template pack plugins, but the content of my index.php file seems to have changed considerably from the original one bundled with the template… and this is a problem as I now need to tweak the design of the homepage.

    The ‘new’ index.php has thing kind of thing in it: *snippet*

     

    <option value="">

    … whilst the original has: *snippet*

    <div class="box post " id="post-">

    <a href="" rel="bookmark" title="Permanent Link to ">


    I’m a bit stumped – not sure how I’m supposed to edit my layout now?
    Any ideas would be hugely appreciated, and I promise I’ll love you forever. ;)

    Thanks!

    Reply
  • Melton Cartes

    Posted 384 days ago
    12

    Hi, Darren: Awesome tutorial.

    I’m child theme-ing TwentyTen with BP Template Pack but I’d like to have a “smart” log-in/log-out in one of my sidebars, as seen in BP-default.

    Where can I find that code?

    Reply
  • Danny

    Posted 400 days ago
    11

    Dear Friends,

    I am really a newbie here.
    I install wordpress with buddypress and bbpress (please check http://www.fellowchirps.com)

    The problem is , my forum is not working as it supposed to be.
    Do you ever experience same problem with me?

    Another one is, wordpress with buddypress is called blogging web site that can be used as social networking, but after I install buddypress theme, there is no blog tab, and I really do not know how to blog

    Can anyone please advice?

    Many thanks in advance

    Best Regards,

    Danny

    Reply
  • Ashief.k

    Posted 525 days ago
    10

    thanks for ur sharing knowledge
    i am installed buddypress its working fine.the problem is that i am trying to create dashboard for my site for that i should get the details from buddypress[user details] what should i write in my template page
    to use buddypress code the function which buddypress is using that is not accessible in that page no output is cmng ….. plz help me out i am stuck with this…

    Reply
  • Dainis W. Michel

    Posted 530 days ago
    9

    Hey, I’m looking for help with things like http://buddypress.org/community/groups/how-to-and-troubleshooting/forum/topic/nested-comments-are-not-indenting-or-formatted-differently/

    …i have not found the buddypress community to be very giving in terms of code and direct help…

    can we work something out?

    Best,
    Dainis

    PS: I’m wanting to nest comments in bp-default and am searching for the right file and style to edit…

    Reply
  • Marian S.

    Posted 586 days ago
    7

    I’ve had the hardest time with Buddypress. Maybe these tips will work for me better… I wish I could understand all the code easier!

    Reply
  • mahsyar

    Posted 591 days ago
    5

    omg you are 17 years old? salute!

    Reply
    • Saad Bassi

      Posted 591 days ago
      6

      Hahaha. Same expressions I had. :D

      Reply
  • Cosmin Negoita

    Posted 591 days ago
    4

    Well done again, Darren :)
    Nice article!

    Reply
  • Melissa joyce

    Posted 592 days ago
    3

    Really amazing ……

    Reply
  • everlearner

    Posted 593 days ago
    1

    Hi, thanks you very much for your BP theming tutorials.
    By the way, is there a way to move Activity tab from BP user profiles page next to Profile tab, without hacking the core file, bp-activity.php? So the final result of the profile tabs would be Profile, Activity, Messages, Friends,.. etc. I also tried to overwrite in bp-custom.php, but can’t. May be I did the wrong way. :(
    Again, thank you very much for your theming tutorials.

    Reply
    • DarrenM

      Posted 593 days ago
      2

      No problem :P Glad you like them

      by adding
      define( ‘BP_DEFAULT_COMPONENT’, ‘profile’ );
      to your wp-config you can make the profile element the default tab instead of activity, though to rearrange the links would be alot more work.

      as for bp-custom.php make sure its in wp-content/plugins

      Hope that helps! Let us know how you get on!

      Reply
    • Erock

      Posted 543 days ago
      8

      Add this to, or create ‘ /plugins/bp-custom.php’

      function erocks_change_bp_tag_position()
      {
      global $bp;
      $bp->bp_nav['activity']['position'] = 10;
      $bp->bp_nav['profile']['position'] = 20;
      $bp->bp_nav['posts']['position'] = 30;
      $bp->bp_nav['blogs']['position'] = 40;
      $bp->bp_nav['friends']['position'] = 50;
      $bp->bp_nav['messages']['position'] = 60;
      $bp->bp_nav['groups']['position'] = 70;
      $bp->bp_nav['settings']['position'] = 80;

      }
      add_action( ‘bp_init’, ‘erocks_change_bp_tag_position’, 999 );

      article and download on this here. http://erikshosting.com/wordpress-tips-code/reorder-buddypress-tabs/

      Reply

 Add Your Own Brilliant Comment:

Tags allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

US