Working with thousands of service providers in Appointments +

We are working up a custom plugin to accompany Appointments+. Currently, Appts+ is good for small companies when there is a few, or even a few dozen, service provider. We are trying to develop a sort of "Intelligent Matching" tool to match customers with service providers.

We are gathering preference data from the customer during registration via Gravity Forms, so we have the customer's data in the database. We also have the service provider's attributes in the database. We also know how to pull it together.

The issue is outputting the matching in a meaningful way within Appointments+ so that on the Make an Appointment page, where the user gets to pick the provider, he/she is only shown the providers that they are matched with, but also to ensure that it is all filtering through and that the available schedules are all being displayed correctly on calender.

I'm not the programmer on this, but I'm posting this topic to get our conversation started. He may come in later with specific questions as well. The site we are building out is going to have at least a few hundred service providers, which is an unsuitable volume without any kind of filtering for it (hence the need for profile matching). The goal is to make the service provider offerings to the customer more digestible and understandable.

  • Jose

    Hi @Saunt Valerian,

    Hope you are doing fantastic :slight_smile:

    If you already have all the matching sorted, and you only need to know where to apply the logic, then you should be good by using the filter 'app_workers'.

    Your code should look something like this:

    function filter_matched_workers( $workers ){
    //Apply your filter logic here. 
     return $filtered_workers;
    add_filter( 'app_workers', 'filter_matched_workers' );

    Please let me know if you or your programmer needs any specific information and I'll be glad to answer.


Thank NAME, for their help.

Let NAME know exactly why they deserved these points.

Gift a custom amount of points.