Feature Suggestion

Hi @hakan,

Here's 3 suggestion to improve the plugin.

1) When i Select the HOUR for the appointment, and the confirmation box appear, the selected box of this time shoud have a different color. Add a Class="active" status to this box and in the css we can change the color of this active selected box. (better UX design).

2) Add a "Confirm / Reject" appointment action.
I'd would like to have the possibility to reject an appointment even though it's a paid one. That way I could cover a few situations where the provider had a problem and the admin needed to cancel it. There are a few other things that this feature could cover, specially in the transition from a paper schedule to an online schedule.

3) Add a button "proceed to confirmation" that SHOULD be clicked to make the confirmation box appear. That would also be an on/off option in the settings. This way the user can click in different hours before get the confirmation box displayed. I like the current setup that shows it automagically, but it would help the user not to lose himself in the middle of the process in some layouts.


  • Hakan


    1. Add these codes inside functions.php of your theme:

    function app_add_class( $script ) {
    $add  = '$(".appointments-list table td.free, .app_timetable div.free").click(function(){';
    $add .= '$(this).addClass("active");';
    $add .= '});';
    return $add.$script;
    add_filter( 'app_footer_scripts', 'app_add_class');

    2. You can change status of a confirmed appointment to removed. Doesn't this help?

    3. I am not sure what user will gain with "This way the user can click in different hours before get the confirmation box displayed", but you can do it even now.

    Add a button to the page editor of the appointment page:

    <div class="app-confirmation-div" style="display:none">
    <button type="button" class="app-confirmation-continue">Click to Continue Confirmation</button>

    Then add these inside functions.php:

    function app_confirmation_continue( $script ) {
    $script = str_replace( '$(".appointments-confirmation-wrapper").show();','', $script );
    $add  = '$(".app_timetable div.free").click(function(){';
    $add .= '$(".app-confirmation-div").show();';
    $add .= '$(".app-confirmation-continue").focus();';
    $add .= '});';
    $add .= '$(".app-confirmation-continue").click(function(){';
    $add .= '$(".appointments-confirmation-wrapper").show();';
    $add .= '});';
    return $script . $add;
    add_filter( 'app_footer_scripts', 'app_confirmation_continue');


  • diegoys

    Hi Hakan,
    Thnks for your responses. We had a big holiday this week and I did not had time to respond here.

    1) The code you sent made any selected time add class "Active", but i just need the LAST ONE to be "active". So before adding the class we need to first REMOVE any if exists and then add the class to this TD only.

    2) This case would also be useful for the User to be sure that the provider has received his reservation. It's just a garantee that the user will arrive and his appointment will be assured.

    3) It's perfect.

    I'll add a few more things if you can help me :wink:

    I received a few feedbacks from clientes. The major ones reffer to how the Admins can visualize the appointmens better. That's also my concern and having this done properly can significantly help my clients to move from paper to online scheduling.

    4) Add Sorting to [app_my_appointments] shortcodes and appointments admin table

    5) A Problem that can Occur: Admins can manually add Appointments that break the normal schedule. That is FINE, but i think that a WARNING should be added to prevent that this is done unintentionally. Ex. "This time is not available to set this appointment. Do you want to continue anyway?". That problem can easy happen because the admin will no be looking to the schedule table when he is adding a new appointment.

    6) A Problem that can Occur 2: The admin can add an appointment of a service to a provider that does not have this service atribuition. This should be filtered in the dropdown to show only the ones that do that service.

    7) Add a funcionality for the user to cancel his appointment online.

    8) VERY IMPORTANT QUESTION: I have 3 places that I control and i need to receive payment from all of them in ONE paypal business account. In the paypal IPN page i can only put one returning URL. Today i'm using a multisite install, and each place is a blog in the multisite. To work properly, each site has it's own return URL. Is it possible to receive the IPN in the portal URL and automatically redirect to the correct site?

    Thanks in advance.


  • Hakan

    Hi Diego,

    For #1 use this function instead:

    function app_add_class( $script ) {
    $add  = 'var my_app_free = $(".appointments-list table td.free, .app_timetable div.free");';
    $add .= 'my_app_free.click(function(){';
    $add .= 'my_app_free.removeClass("active");';
    $add .= '$(this).addClass("active");';
    $add .= '});';
    return $script.$add;
    add_filter( 'app_footer_scripts', 'app_add_class');

    For #8, as Joe noted, if your plugin defines its own IPN return url, then it supersedes whatever entered in your PayPal account. As A+ defines it itself, there will be no problem for multiple sites connected to a single Paypal account. AFAIK all WPMU DEV plugins work like that.

    #9, is far from the scope of A+. You can use a 3rd party plugin which checks user IP, find his location based on this IP and write this value in e.g. Notes field when an appointment is made by the client. You can use "app_new_appointment" action hook for this. Obviously this requires some custom coding.


  • diegoys

    Hi Hakan and Aecnu.
    Thanks a lot for the reply. You've been very helpfull so far.

    A few things that i asked i found in other posts in the forum, for example the sorting, that you said that will come out soon and the cancel option, that you are not planning on doing that way.

    The paypal part i actually found another way that will not even use the IPN for each site. So i won't even test if there is a problem in that part. I'm using now the marketpress and for payments i'll use the cubepoints. The user must purchase in advance points, and that was exactly what i wanted from the beginning.

    I have one thing also that I need to implement so i can start using the site the way i planned.

    1) I need to charge the user only one time the fixed amount. Even if the user add another appointment to the cart.

    In my mind i think that it's very easy to create but i don't know how to code that. I guess it would be only an IF statement to check:

    if there is a A+ in the cart, Price = 0
    if not, price = fixed amount.

    I know that this is a special case only, but i would be grateful if you guys could help me on that.

    Best regards.

  • Hakan

    Hi Diego,

    If I am not wrong, you lead your clients to pay a fixed amount in advance, then appointments are free for them. Is that right?

    This looks like more close to Membership than Marketpress. Don't you consider using Membership plugin? You can ask an advance amount to be a member and you can easily set appointments to be free for your Members (set discount as 100).

    In Marketpress case this will not be easy, even it may be impossible, because I don't think it is possible to finalize a checkout when total amount is zero. I mean, payment gateways will not accept a zero value transaction.


  • diegoys

    Hi Hakan.
    I actually want to charge the user a fixed amount. $5 for the appointments in ONE session. But i'm using marketpress to let the user add more than one appointment at a time. That's because he normally uses more than one service at the local shop.

    For me, does not matter if the user makes one or more appointment. I just need to charge him $5 for using my system.

    That's why i need to make a function to check if the user already has an appointment in the cart. I don't want to charge him $10 if he adds 2 A+ in the cart or $15 for 3 A+. I just want to charge him for convenience fee for the A+($5).

    I'll also use the membership plugin later on to have a few customer pay in advance a monthly fee and have different levels of discount in the site, but for the regular users, i just need to charge a fixed amount.

    As for the payment i'll be using cubepoints, so the user will pay in advance and have credits by the time he makes the appointment.

    Today the plugin already checks if the fixed amount is set in the back-end. I just need to add an extra IF STATEMENT to check if there is one appointment already in the cart and make the second, third, fourth etc A+'s price = 0.

    I'll take a look how the plugin does that today so i can have a better understanding how to make this work for me.

  • Hakan

    Hi Diego,

    That's why i need to make a function to check if the user already has an appointment in the cart. I don't want to charge him $10 if he adds 2 A+ in the cart or $15 for 3 A+. I just want to charge him for convenience fee for the A+($5).

    This is a MarketPress question rather than an A+ one, but let me tell my opinion how you can solve it:
    - You should apply a *discount* to the cart such that resulting amount comes to the fixed amount you ask.
    - You have to do this using MP, because A+ has no control over the total cart price. It is just a product. MP is the master here which controls the final payment amount.


  • diegoys

    Hi @Hakan,

    Wouldn't be possible to change the price of the product that is being added to the cart to Zero, based on a check whether the cart is empty or not?

    I really don't think that would be a very hard thing to do?

    Appointment plugin already set a fixed value for the product and override the price set in the marketpress.

    I just need an extra IF statement that checks if the cart is empty and if not, the price of the item should be 0.

    Do you think this approach is viable?

    In the Marketpress section, they said that a discount would not be possible for this case either.

  • diegoys

    Hi Hakan, thanks a lot.
    Sorry if i make a lot of questions.

    We are almost up and running here. Feel free to check what we are doing with this amazing plugin if you like :wink:

    I'll take a look on how to make this IF with some developer later on. By the way, the cart will not be 0 value. It will always be $5 cause the first service in the cart will use the fixed price set in the backend. The other ones will add 0. Just that.

    Well, I'm now focused in making the steps to purchase a little more fast. Cutting some steps to speed up the shop process. I just posted a question in other MP topic. See if you can help me with any of those that concearn to A+.

    My site is almost perfect to what we intended to be in the first place thanks to you.
    I'm really glad. =)

    Best regards,

    Here is the new topic URL:

Thank NAME, for their help.

Let NAME know exactly why they deserved these points.

Gift a custom amount of points.