Customization questions
-
Hi
I have a project coming up for a client that is an NGO that offers study abroad courses for students. Their website needs are very complex and will require a lot of customizations to buddypress if I decide to use it.
My first questions is, is it possible to update profile content/meta (including custom content I will add) after a user submits a form within a section in their profile? Each student will be required to perform a list of tasks/assignments that they will need to check off (hopefully with a form) and I would like the status of their tasks to be updated within their user profile. Is it also possible to add in forms for things like this to work? Would it be a third party plugin or does buddypress offer form functionality that can tie into the user profile meta?
It would be ideal for the user to have a checklist of things to do and as they complete them they just check a checkbox and after they save the form it would then display an updated status so that moderators can see their progress.
Along with custom form functionality, is it possible to have custom email notifications and replies going out after form submission that would also be managed and or customized within buddypress? or would that be another third party plugin I would have to add in?
Then for user and user role capabilities, is it possible to have multiple logins or users access the same account/profile? I would like to have parents and students have access to the same profile/students’ user profile but also have different user roles assigned to them.
My last questions is, I would like to add the capability for the users to pay a deposit that would also update the users profile after paying. Would this be third party? If so, is it possible to tie into the user meta to update their status? The deposit amount is also a variable in that the price will be different based on some of the course registration options/variables entered in by the student. *Some will need financial aid as some will not need it, so deposit will change based on that variable.
Thanks for your time
-
Hi
in short everything you have asked can be done.But I’m a little bias as I honestly believe regarding technology there is nothing that can’t be achieved it just comes down to how much time and budget you have to invest… 🙂
Below is a bit of a ramble…. But might provide insight. after you organize your coffee and come back.
I have nearly completed a project that sounds similar in nature (few weeks from launch in final beta testing), however it was a highly customised solution (private membership site) .
With nearly 70 plugins, 100’s hours coding integration code (lots of trial and error) between the plugins and also compatibility tests with multiples of plugins to ensure no issues, because of slow load times the project requires deploying from CDN,fast servers and customised caching solutions.
most of work load appeasr to be bbpress – so an near out of the box solution, you prob don’t need to go that far.But not to scare you. Here are some pointers that might answer your questions, based on my understanding of the OP.
In my case I spent many months researching solutions with many platforms (open source / paid / managed premium) – buddy press was selected simply because is built on WordPress that’s already has the core abilities you need, you just need to “hook in to’em” and take advantage of this concept – you can keep working on bettering and adding separate components / features as time goes by, great for client, works out a bit cheaper in the startup phase and great for developer – land ya self a permanent support / ongoing development contract……
Is it possible to update profile content/meta? : In general yes, buddy press allows this out of the box
Either the user or the admin can update, you can have admin only fields (the user doesn’t access them – but the admin can)
if you use a membership plugin eg, s2member – you can extend this idea much further eg, only require email on signup, then all other fields are accessible from profile and can set fields on a per membership level,In your case, you might have different profile fields for students, teachers, Parents and only require a couple of basic fields to be completed on signup and all other fields can still be “required” when they reach their profile page.
For profile field management I recommend the s2membership pro plugin (free version available) http://s2member.com/My project has a “todo list” for each and every member – however I’m still to this day unable to find a plugin that interacts with a completed wp/bbp/buddypress site. So I had to code one. The todo list was designed / engineered in a way that interacts with “wordpress” in general, by storing a completely unique data feed much like the activity feed with time stamps and can be programmed to be linked to any site link, media download, page view, forum post, reply any activity on the site can be logged and applied to the feed which the to-do-list interacts with and auto completing (crossing of the item) each item also has dependencies, so you rattle off a list of activities before the task is crossed off and each to-do-list also has dependencies so it is not seen by a user until certain tasks are completed, eg, purchase a course from the store, or complete a previous to-do-list.
In short: Yes it can be done, however I’m not aware of any 3rd party plugin that does this successfully.
In my case I have the to-do-list shown in the sidebar so as a member goes through the tasks the list is also available to them no matter what page they are on. But possible to publish it in the profile page if required.
Regarding email notices, I recommend looking into the woo commerce sensei http://www.woothemes.com/products/sensei/ plugin for your courses that way you have management of email notices, in fact prob most of the things you require will be available via sensei – note this is a premium paid plugin with yearly ongoing licence costs.
Without a free trial version to try before you buy.But maybe gravity forms developer licence might be fine in your case as it has, gateway plugins, qiz and survey plugins – it would be possible to build certain simple courses on the gravity framework including delivery of custom emails – if building a form based system than certainly worth a look into – but would require a developers licence to get all the plugins you would prob require.
In fact what I do is use gravity forms email chimp plugin to send the members email address to an email list (automation campaign) in mail chimp (paid account) that auto sends a welcome emails that I have customize to suit the activity they have completed, this way I can send pretty html + marketing emails + scheduled follow up emails and take the work load off WordPress other than a quick API connect on demand.
Regarding: is it possible to have multiple logins or users access the same account/profile?
In simple: Yes, but it all comes to context of the profile, will each member be able to see other members profiles or will parents be able to edit a child profile etc.Although my project does not require the need for 2 or more members to edit a single profile, I do have multiple levels of context (horizontal and vertical memberships) all with their own set of rules who profiles they can see and what buddypress features are available to them – some members don’t have activity feeds or messages, But I needed to ensure that members that do have access to these features can’t access the features of cross membership and so on.
This is 100% custom code (no plugin) but while coding this up I recall thinking I’m 100% confident it is possible to add another level of check “if current user can edit displayed user” and go from there, all you would need is a profile field / meta that links multiple accounts together –
Eg, a parent account has a profiled field “child user name” – they just enter the child username / user ID – and now we would add the profile check if a parent is viewing the child’s profile.Regarding paying a deposit, and payment, this is my findings.
There was no single one membership / payment plugin that integrated perfectly into what I wished to achieve – I have tested many. please note I’m suggesting there are no plugins that do this stuff just none that achieved the outcomes I needed for my project.
– Tips: – start the project design based on the payment systems / gateway (the complete project and direction of development is 100% dependent on this) because the simple reason every feature you implement needs to check “is a paid member and what level (cap / role) ” – including free membership with paid features “is not a paid member” but has paid for… this includes recurring and non-recurring subscriptions with consideration of what you intend to do if a subscription expires.
Eg, a recurring subscription will either just auto subscribe and pay for the next time frame (or fail)
A non-reoccurring subscription will auto expire after a given time frame (or X cycles)The difference between to the two –
Is generally on a recurring subscription when it expires it also linked to a member account to “do something” eg downgrade membershipA non-recurring subscription is generally used for a onetime payment you have access forever feature- eg, a course and resources, you pay once on a deposit, subscription over several weeks when the subscription expires the member still has access to the course as long as they remain at minimum a free member on the site. (anyhow that’s how I have implemented things)
These two concepts are completely different in the way they interact with the member as well at many levels although on the surface appear to be almost the same, add in a deposit feature you are also opening another level of context to play with, mostly limiting the available options regarding the payment gateway service you will need to use or more so which services have this feature on offer.
As mentioned – my suggestion is start with the gateway solutions first and reverse the design back to the front end. – this is the big lesson I took away with this project (4 rewrites in total) as it was always a block relating to the gateway limitations (and laws relating to online subscriptions in my country).
My project:
Woo commerce (free) for shopping cart system including purchase of courses, subscription to site and deposit/ subscription to courses, plus all other products, deliverable products, workshops, webinars, one on one sessions, resource downloads from pdf to videos. Anything you can think off can be sold through wooWoo commerce quick cart – plugin (paid)– now I can add a buy now button on any page for any product including subscriptions – the membership info page has a standard 3 column price comparison chart with nothing more than a “sign up now” button – clicking the button auto adds the subscription to cart and opens the checkout popup with one click and without leaving the page (no need to send to store)
Sensei (paid)– for courses and fits well into woo commerce system (but requires a couple more plugins and custom integration code if implementing paid / subscription based courses )
Groups plugin (free) to easily manage roles and caps (as I have to teach client staff how to do this and manage the site) WordPress has this capability built in if your a coding ninja (I’m not)
Groups Woo commerce (paid plugin) to link groups to a purchase – apply a role / cap or groups of, to a user based on the purchase.
Then some custom code is required – to perform a check and if a user has a particular role or cap than apply the s2membership level – this check is done at the store level so if a member cancels or defaults on a payment – the membership level is auto adjusted depending on what role or cap is supplied to the user from the groups woo commerce automation. groups plugin manages non-recurring subscriptions so a expired subscription does not remove the users caps and roles (but a default on payment does)
S2member pro – for membership level management including profile fields management and most importantly complete site access management – I can apply access to each and every competent of the site this includes , forums, topics, replies, posts, pages, media, courses, and content within pages eg, home page displays different content based on the membership level / logged in or general public. s2member pro is also used to override default bbpress / buddy visibility settings eg, hidden forums only available to certain member levels – but requires custom code to apply or traverse access levels on submitting topics / replies to ensure widgets and other snippets don’t display private areas to members that don’t have access. (it allows you to write custom queries with zero concern or consideration to access levels)
For subscriptions (paid)– I use woo commerce Subscriptions plugin – this manages on its own site access based on paid recurring subscriptions (or in simple turns on or off user account based on payment) – pay x amount monthly to access certain site features, courses and resources, forums, pages, blog articles etc.
However – woo commerce subscriptions does not manage deposit / time based subscriptions (non-recurring subscriptions) eg, pay a deposit for a course and gain instant access then pay off on a subscription for x amount of weeks / months –
I was not able to find any plugin (free or paid) that does this, so I had to write a plugin currently under experimental concept stage.Other tips: often it’s better to find compatible, well supported and pay for premium plugins that have overlapping features and disengage these features you don’t want to achieve your goals and do as little integration code as possible, but anything you do needs to be well planned and though out as to not to touch core code in any platform, framework or plugin.
At the end of the day you want the ability to upgrade all systems as time go by.Eg, s2member plugin has its build in membership system that is “required to be active” for the plugin to work. – all I did was setup a single paid (never to be used membership) on a paypal sandbox store this includes setting up all the s2membership registration pages etc – then put a simple redirect in the .htaccess on any of these pages. Now to purchase membership you must go to the store (woo commerce) and purchase a subscription via woo – s2member has now has nothing to do with membership registration / payment systems.
And of course I have “force account creation” turned on at the store – you cannot make a purchase without signup at a minimum free site membership.
by disengaging the buddy, bbp, Wp, and all other means of registering (by redirect) but only leaving the woo commerce customer account registration available – The pop up registration form I use for free members is just a woocommerce customer account registration form (with no products attached) with a fallback to the s2membership cut down reg form (in case ajax / jquery etc not working on client side)And now all purchases, subscriptions, shop account, courses etc are now available from the buddy press profile page also via a “woo to buddypress” plugin (or in my case built into the theme)
May sound complicated but as mentioned I would really suggest starting with payment solutions and nut out this part of the project first as this will most likely force development direction,
one of my project goals was a solution that can cater for anything…. so,
Regarding variable deposit / costs amounts based on user input – if using similar approach as I did – you would just setup woo commerce discount codes per variable outcome / result and would just reveal the correct coupon code to the user on the checkout page. they just cut and paste this code into the discount field and click apply.
or setup up multi products – one product per price base. – have the user input their details first and the result would be – apply a groups cap / role then only offer the courses products in the store with the associated price base based on user caps / role –
woo discount coupons can be setup on multiple bases – eg, deposit amount / on going subscription amount or total amount or per product or per cart total etc.
for me was plenty of research into this including concept builds of other community platforms and as above is only a bit of a sample of features used relating to the OP.
I was under very strict key point goals and achievements requiring very specific outcomes many of these affected development direction how / why I implemented the above.There may be better simpler ways to suit your specific project, but thought it might be worth a mention for some direction. or at least insight into some of the plugins I use / ideas and concepts.
my usual disclaimer – if there is something in there for you, that’s great! if not that’s fine too!
enjoy!
wow thanks so much for offering all of this information and insight. I need time to really digest and understand everything you explained but for the most part it really helps a lot!
I knew for sure that my project would require a lot of customizing and extra plugins to achieve what i’m after but the biggest help that you have offered so far is that I need to start from the payment system. I didn’t think of that before and I see how it makes perfect sense.
I do want to ask, if I start at the payment system, is it still a good idea to include buddypress as well right from the start of my project?
I might have some other questions for you later on when I actually start working on this project, right now I’m still researching all of my possible options and solutions as well as working out all of the logic from what you said.
thanks
Hi, thanks and glad there was something in there for you. Don’t spend too much time digesting as above was provided as a generalised overview of possibilities, as too is below.
**I find once narrowing down a couple of solutions concepts for a project next step is roll out a concept build and play for yourself and see how things work or not work including if the concept platform sits well with your own methodology of design and capacities .
Re, including buddypress from the start, sure Why not?
I challenge you to list any reasons why one wouldn’t consider committing to buddy on initial planning. (no need to post, just a thought provoking exercise)
With my own project one primary key point goal was the project must be built on WP, right from the start I even consultant client against this idea, at the time I believed there are “better” solutions out there for a community building site (of this nature). Without going into details why and how such other platforms “could be” implemented.
The end result was I always came back to Buddypress being a perfect smooth integration as a small component of the complete project. At that time it was just a case of commitment and understanding there are going to be some big customs on the horizon, I’m very familiar with WP and its hooks and filters so developing bp / bbp was just a case of heading to the codex pages and certainly an influencing factor in using buddy – having an extensive self-help support system.
Regarding other community platforms built on WP I did look at other open and premium paid systems , my findings: in support of buddy for this project.
1. Self help support community – provides a wider understanding of what you are trying to do, and therefore can provide much wider access to resources and solutions (access to 100’s of developers , compared to a single tech support that can take longer to explain things before they “get it!”) – stuck on something just search the support, before posting you will be really surprised that even 5year old post can provide direction.
2. Plugin support – say plugins, today if there is not a plugin that does it, there will be soon… Very common on long term projects I work on, I will write a plugin / function code, then 6months later either a theme, plugin or even a core update is released with the same feature. That’s not a bad thing, it just means I’m always at least 6months ahead of the rest of the world……. Well that’s how I read it
3. Warm and fuzzy feel good feeling in the open source arena – everybody to his own, with respect. And the open source arena means different things to different people. For me this project has opened further opportunities to release certain features / plugins back into the community once tested and proved etc. – so there is a level of warm and fuzzy for me regarding using buddy press being something not provided elsewhere. (but that’s just me)
What you use for the community building and offering of other features it’s really up to you. It makes sense that if your store is built on wp, then you would use wp for all other components of the project. (buddy, bbp etc).
So why not commit to buddy right from the start if you choose to using a wp based store?
You could consider the store / payment systems a separate project, where you decide to use a wp base store. And the other project is a wp based community building site.you are just using the same wp install for both projects. –
referring to my suggestion “start with the payment systems first” it’s more so, maybe focus more energy on this part to ensure you get it working first before investing too much time in rest of the project.
Maybe consider your concept build to be an “out of box” wp / buddypress install (provides opportunity to play with buddy while working on the store / payment systems and check out the woo plugin library too.
One advantage will be each customer account (user id) will be same buddy press member id (user id) – from there you’re pretty much only limited to your own capacities as a developer and of course client time and budget.
My understanding of BuddyPress is it’s an extendable community building framework eg, has friend’s connections, member’s directory, forums(bbp), message systems + a bunch of other cool features etc. apart from the specific community building features it’s up to the developer to extend using existing plugins or creation.
Enjoy!
thanks again for the info.
I have another question, do you think I will have to use bbPress and buddypress together? I’ve used bp before and I know it does come with some forum type functionality so I’m just wondering if that is what you are recommending with what you know about my project.
I haven’t used bbp before and I also haven’t heard if anyone has used both bbp and bp together. Or maybe I just don’t know enough about the difference between the two?
- The topic ‘Customization questions’ is closed to new replies.