Allowing service providers to confirm appointments through their BuddyPress Profile

A+ is being very handy to me and I'm receiving great support here, but have two more things I need help with:

1) Is there a way to allow service providers to confirm their appointments through their BuddyPress profile?
For now the only things that show in the front is the tab for setting the appointments and for seeing confirmed appointments. So for a service provider to confirm an appointment, he has to go to his profile in the end. I would like to allow them to do everything in the front through BuddyPress, is it possible?

2) The other thing is that when I select an appointment for a specific service provider in his profile, the confirmation form shows up with his name, but not with the service that he provides, it is always the first service that I added. How can I make the form to show the service of that specific service provider?

Thanks in advance

  • aecnu

    Greetings Filipe,

    Thank you for the great questions.

    The first question regarding allow service providers to confirm their appointments through their BuddyPress profile will be at minimum a feature request or alternatively you could see if there's a developer available at wpmu jobs who could get onto it right this minute.

    In regards to the second question:

    How can I make the form to show the service of that specific service provider?

    Before I make any move to invite the lead developer to perhaps answer this question, please update your installation to the latest version 1.1.7

    We do not need to be fighting with something that has possibly been resolved already in an update.

    Please advise if indeed this last question or question number two has not been resolved with the update.

    Look forward to hearing from you in any event.

    Cheers, Joe

  • Hakan


    1) This feature will be added in the next release.

    2) This behavior is quite normal. The correct process to apply for an appointment is in this sequence:
    1. Client selects a service
    2. And THEN he picks up a provider (or leaves it with no preference)
    3. Client picks a free time slot
    4. So on...

    When you start from step 2 and try to proceed to step 3, there is no service defined. Then A+ automatically picks up the first service, in order not to crash the codes. This will work in case there is only one service, but not if there are 2 and more services. Obviously this is not a general solution.

    This is one of the reasons we didn't include applying from BP profile tab. In fact [app_schedule worker="1"] usage is just intended to *display* the schedule of the provider, not for applying for an appointment for that provider (Do you remember my emphasis of "display" on the other thread?).

    As yours is a customization, there may be different solutions to fit to your case (But these may not be general again).

    The simplest one comes to my mind now, provided that every provider has only one service, you can use it like this: [app schedule service="{$service_id}" worker="{$bp->displayed_user->id}"] where $service_id is the only (or first) service that provider is serving. To find it you can use:

    global $appointments;
    $worker_id = $bp->displayed_user->id;
    $result = $appointments->get_worker( $worker_id );
    $services = $appointments->_explode( $result->services_provided );
    // Take the first service if provider provides more than 1 service
    $service_id = $services[0];
    echo do_shortcode('[app schedule service="'.$service_id.'" worker="'.$worker_id.'"]' );

    I didn't test this, but i think it should work.

    If provider is providing more than 1 service, then you need to use [app_services] shortcode, but you will need to filter the results so that only current provider's schedule will be shown. This may not be so easy. So I don't recommend it unless you are an advanced php programmer. Instead of that try to add a tab for each service he is providing.


Thank NAME, for their help.

Let NAME know exactly why they deserved these points.

Gift a custom amount of points.