As mentioned on the portfolio page, the development of the private social network for the Upper Room church community was particularly interesting. I’m documenting the process and some of the pitfalls we came across in the hope they may prove useful for other users.
One person held all the information about all community members and was responsible for keeping everyone up to date with contact details and event plans and information. As the physical community grew, keeping abreast of that information and fielding calls and emails to share it was becoming increasingly difficult so a solution to make that information more accessible was required.
Create a Social Network where users are responsible for keeping their own information up to date and can selectively make that information available. To incorporate the ability to create groups (public and private), events and discussion forums to facilitate connection between community members and to provide a central space where everyone can keep up to date.
There were a couple of possible options considered. Initially the Social Network platform Ning was a potential option but the preference was to actually have all the information in one place rather than be sending people away to an external site from the existing hosting. We also wanted to maintain control and the ability to customise the installation to our specific needs. There was also the issue of ongoing expense up for consideration – so after some research we opted to trial BuddyPress a free platform built on WordPress, the CMS that the client was already familiar with.
BuddyPress and all of the components listed below were installed as easily as any WordPress install and the initial time taken was to customise the skin. Because the original BuddyPress theme was simple and clean, as is the primary UpperRoom site, there was little difficulty in modifying the BP colours to suit the Upper Room. The only initial hiccup at this point was the business of having the header image changed to suit. It took some time to figure out that changing the header occurs in the the BP admin menu rather than handled in the raw CSS where it’s my preference to make changes. Once this was done the plugins were installed and the initial site was up and running.
The choice of plugins and their deployment is covered thematically in the following paragraphs, starting with the core installation and running through the various needs of the site and how the plugins address those needs.
Of the core components in BuddyPress all of the following options are enabled.
Activity Streams – Allow users to post activity updates and track all activity across the entire site.
bbPress Forums – Activates bbPress forum support within BuddyPress groups or any other custom component.
Friends – Allows the creation of friend connections between users.
Groups – Let users create, join and participate in groups.
Private Messaging – Let users send private messages to one another. Site admins can also send site-wide notices.
Extended Profiles – Activates customizable profiles and avatars for site users.
Using Extended Profiles gave us the option to add in custom fields so that the primary object of the site was met to make contact details available – the added profile information we have included in the build are – Mobile Phone Number, Website, Facebook Page, Twitter. There are 3rd party plugins integrate further with Twitter and Facebook but it was decided that in order to keep the feeds as clean as possible and to reduce the noise of information overload, keeping the site for Upper Room info only was the better option.
Having put these profile features on the site we also have given the users control over who sees which elements of their profile using the Profile Privacy Plugin.
Of course, given that we’re making such personal information widely available we really need the site to be closed to the general public and there are several areas that are taking care of this aspect of the site. It was this element of the build that was the most challenging.
First off we employed the core WordPress feature to close the site to indexing by robots (such as Yahoo and Google).
Second we installed and deployed the Secure Invites plugin so that we could restrict registration on the site only to those people who are members of the real-life community. I should point out at this juncture that the Upper Room has an active following on Facebook and Twitter and that the development of relationship with people in the wider community occurs here rather than in the Living Room.
Thirdly we needed to restrict certain pages of the site to only people who were registered members and were logged in. And it is at this point that we started to get a bit stuck trying to make the plugins we wanted to use work together.
We started with Private Buddy Press and while, on its own, it worked perfectly it screwed up the workings of the Secure Invite plugin because Secure Invite needs certain pages to be accessible in order to work. Private Buddy Press didn’t seem extensible in such a way as to be able to specify more specifically which pages we wanted to allow access to, so we turned our attention instead to Buddy Press Private Community. Finally after a lot of mucking about and deciphering (late at night – never a good idea) the logic of the program I set up a default page (that doesn’t appear in the dynamic menu thanks to Exclude Pages from Navigation) that comes up when a non logged in user appears and to allow access to various pages that do need to have access, which of course, includes the Secure Invite pages. For those who are interested here’s what our Buddy Press Private Community Plugin config looks like.
// this section displays allowed sections - given that the site is stored in a subdirectory /social the sub dir had to be included in allowable fields. - There's more information and a lot of help here -
MM_BUDDYPRESS_PRIVATE_COMMUNITY::$ALLOWED_URIS = Array(
//this is the prefix that allows the Secure Invite plugin to work correctly.
//This is the page that non logged in users redirect to
MM_BUDDYPRESS_PRIVATE_COMMUNITY::$REDIRECT_TO_URL = site_url( ) . '/restricted';
//this is the hook that is added to the url so that when the user logs in they're redirected to the page they tried to access in the first instance.
MM_BUDDYPRESS_PRIVATE_COMMUNITY::$REDIRECT_HOOK = 'new_redir_to';
- All in all the site is now functioning in the way we want it to. I’d love to see someone in the BuddyPress Community integrate some of these privacy aspects into their build for the likes of me who’d love to have an easily configured social network for less public use. I even think it would be useful to create a low budget intranet for users in almost any kind of organisation.
For the record, the full list of plugins currently installed is below.
Summary – The Final List of Products/Plugins.
Social networking in a box. Build a social network for your company, school, sports team or niche community all based on the power and flexibility of WordPress.
Version 126.96.36.199 | By The BuddyPress Community | Visit Plugin Site
Photo Albums for BuddyPress. Includes Posts to Wire, Member Comments, and Gallery Privacy Controls. Works with current BuddyPress theme and includes Easy To Skin Templates.
Version 0.1.8 | By The BP-Media Team | Visit Plugin Site
Gives users of a BuddyPress site the ability to ‘like’ activities, and soon other social elements of the site.
Version 0.0.7 | By Alex Hempton-Smith | Visit Plugin Site
BP Group Documents
This BuddyPress component creates a document storage area within each group
Version 0.3.5 | By Peter Anselmo, Studio66 | Visit Plugin Site
BuddyPress Group Email Subscription
Allows group members to receive email notifications for group activity, especially forum posts, or weekly or daily digests.
Version 2.7.1 | By boonebgorges, Deryk Wenaus, David Cartwright | Visit Plugin Site
BuddyPress Private Community
This plugin makes your BuddyPress community private. Only logged in members can view the social areas in full. You can set URLs that are available to everyone.
Version 0.5 | By NipponMonkey | Visit Plugin Site
BuddyPress Profile Privacy
Allows “permissions” to be set for xprofile fields.
Version 0.2 | By Jeff Farthing | Visit Plugin Site
Stops public signup on your WordPress MultiSite or BuddyPress site, but allows existing users to email and invite their friend to join your blog community. This plugin is based on a plugin by kt (Gord), from http://www.ikazoku.com.
Version 1.0.6 | By Chris Taylor | Visit Plugin Site
BuddyPress Management Tools
When a user registers on your site, Welcome Pack lets you automatically send them a friend or group invitation, a Welcome Message and can redirect them to a Start Page. You can also customise the default emails sent by BuddyPress to ensure that they match the brand and tone of your site.
Version 2.1 | By Paul Gibbs | Visit Plugin Site
BuddyPress Mass Messaging
Allows sending of individual messages to all Buddypress users.
Version 1.1 | By Jeremy Litten | Visit Plugin Site
BP External Activity
Allows admins to import data from an arbitrary RSS feed into their BuddyPress sitewide activity stream
Version 1.0 | By Boone Gorges | Visit Plugin Site
Jet Event System for BuddyPress
The modern System of events for your social network. Ability to attract members of the network to the ongoing activities, a wide range of possibilities and options, support for different types of display, etc. JES DEV Site. Before you install or upgrade sure to read the Readme file!
Version 1.6.1 | By Jettochkin | Visit Plugin Site
Exclude Pages from Navigation
Version 1.9 | By Simon Wheatley | Visit Plugin Site
Page Links To
Allows you to point WordPress pages or posts to a URL of your choosing. Good for setting up navigational links to non-WP sections of your site or to off-site resources.
Version 2.4 | By Mark Jaquith | Visit Plugin Site