Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Latest commit 643b4ed May 11, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
_src Inline edit set app hours with ajax Sep 23, 2018
admin Merged in fix/allow-ahref-on-gdpr-input (pull request #173) Jan 15, 2019
assets Improve interface Dec 14, 2017
bin
bower_components Inline edit set app hours with ajax Sep 23, 2018
css [Appointments+] Adding location to confirmation box and email Jun 14, 2018
images Added better instructions and UX improvements Mar 10, 2016
includes Merged in feature/privacy-policy (pull request #175) Jan 15, 2019
js remove executable bit Aug 25, 2017
languages update data Mar 18, 2019
tests Merge branch 'master' into development Jul 26, 2017
tools Bumped version Jun 26, 2017
wporg-assets Added new npm tasks for a better workflow Jun 19, 2017
.distignore
.gitignore update rtanslation files Apr 19, 2018
.gitmodules Updated Dash notification May 18, 2016
.travis.yml Added Unit Tests Framework Dec 15, 2015
Gruntfile.js prepare 2.4.2-beta.1 Jan 15, 2019
README.md Update README.md May 10, 2019
appointments.php fix for wpmudev host Jan 16, 2019
bitbucket-pipelines.yml Added Bitbucket Pipelines Jul 26, 2017
bower.json Inline edit set app hours with ajax Sep 23, 2018
changelog.txt update data Mar 18, 2019
dev-README.md Rename README.md to dev-README.md May 10, 2019
dev-readme.txt Rename readme.txt to dev-readme.txt May 10, 2019
humans.txt prepare 2.2.6 Mar 27, 2018
package.json prepare 2.4.2 Mar 18, 2019
phpunit.xml.dist Added Unit Tests Framework Dec 15, 2015
uninstall.php Send reminders via WP Cron Feb 22, 2018
webpack.config.js Improve interface Dec 14, 2017

README.md

Appointments+

INACTIVE NOTICE: This plugin is unsupported by WPMUDEV, we've published it here for those technical types who might want to fork and maintain it for their needs.

Translations

Translation files can be found at https://github.com/wpmudev/translations

Take control of scheduling and calendar management for your business with Appointments +.

Let your clients check availability, choose a location, select a service provider, book an appointment and make a deposit on your website.

provider-735x470

Get users comfortable with your team before they ever schedule an appointment.

More Control

Appointments+ is easy to set up, but there’s more under the hood than you might think! Add an unlimited number of employees, partners and contractors as providers. Give them bio pages and display their schedule so clients can choose a provider that fits their need.

Make services and providers location specific so clients can sort availability by service, time, location and provider.

Streamline Scheduling

Our simple 3 click process is configured to allow visitors to set an appointment without forcing visitors to create a user. Your time is valuable. Collect payments or take deposits through PayPal without any additional code or plugins.

appointments-deposit-1470x940

Make it easy to take a deposit at confirmation.

calendar-735x470

Share available time slots and let visitors book appointments.

Simple Integration, Highly Customizable

Appointments + has a super clean front-end interface that works nicely with most any theme. Use a color preset or perfectly match your brand with the color picker. Plus, you can add design tweaks quickly from the included field for additional CSS rules.

Shortcodes, Widgets and Over 20 Add-ons

Use shortcodes and built-in widgets to quickly list services, providers and calendars where you need them. Plus get over 20 free add-ons that expand functionality.

aplus-admin

Administration Permissions

Configure what user roles can manage and access appointments +.

aplus-export

Export Date Range

Choose to export a list of appointments within a specific date range.

aplus-html

HTML emails

Use default plain text emails or layout and send emails with HTML customization.

aplus-locations

4 Location Addons

Create appointment locations, integrate Google maps, and tie services and providers to specific locations.

aplus-cart

MarketPress Integration

Use any of the MarketPress payment gateways to accept payment for services.

aplus-tetris

Dynamic Time Slot Adjustments

Tetris mode adjusts time slots dynamically to avoid downtime after breaks or appointments.

aplus-duration

Powerful Time Slot Flexibility

Advanced service duration control and add padding time around appointments.

aplus-store

Set Custom Post Types

Use custom post types for provider biographies and service descriptions.

Social Login

Capture client information by requiring users to login to schedule an appointment. Make it easy with social credentials – allow users to login with their Facebook, Twitter, Google+ or WordPress account.

Sync With Google Calendar

Both clients and service providers can save appointments made on your site directly to Google Calendar with a click – no setup required. We’ve also included the Google Calendar API. Easily configure Appointments + to automatically sync changes to appointments between Google Calendar and your site.

Usage

For help and information on installing plugins you can view our Installing WordPress Plugins Manual. Check out this extensive tutorial on building your first Appointments based site. Or, watch our video tutorial series:

Appointments + Video Tutorials

Once you Activate the plugin you will see a menu appear on the Menu Bar labeled Appointments. [

Appointments Menu

You will see three sub-menus appear when you click on the menu item.  We will tackle each separately and in order. [

Appointments Submenu

Appointments

Clicking Appointments brings you to the hub of your appointments list.  You will see that your appointments will be separated by status: Active, Pending, Completed and Removed.  You can view each by clicking on their respective links, and each page will show the Client and Service basic info as below.  At the top of the page you will see an Add New button, just like you use to create a new page or post.  Click that and you can Add a new appointment manually to your calendar. [

Add New Appointment

The New Appointment Menu is pretty self explanatory.  There is a place for the client's infomation, the Service information (that will populate from the menus you fill in later) and a place for notes.  Last but not least you can set the status before Saving.  There is a built in tutorial that covers this as well, I will show you where to find that, just in-case you have any questions or forget something. [

Add New Meta

next up...

Transactions

Here you will see your transactions if you are taking payments or deposits.  These are also grouped: Recent, Pending and Future.  Each accessible by clicking their respective links.  You cannot manually add a transaction, the plugin will only record what is recorded through PayPal. [

Transactions

And now the meat of this beast...

Settings

The Settings menu will greet you with a Tutorial.  You should pay attention to that :) It will tell you what you need to know about setting up the plugin and the tabs you see here.  Most are pretty easy to understand and the plugin options are very well annotated, so you should have no trouble.  We can pop through and summarize them here, one by one, but I will draw your attention to the FAQ tab first. [

Settings Menu

FAQ

Here is where you will find info on everything you need in this plugin, ready for immediate access!   The TWO most important pieces of information on this page, for those who are just installing or learning how to use the plugin, are the two links at the top.  These will start (or restart) the tutorials on the Settings menu options and Entering and Editing Appointments. [

FAQ

Now, let's backtrack.  Starting off at the first tab:

General

These settings are the heart and soul of your setup.  Pay special attention to the General Settings box at the top of the page.  Especially the Time base value.  Time Base the most important parameter of Appointments+. It is the minimum time that you can select for your appointments. Everything time related will work off of this value.  The remaining boxes allow you to set your

  • Display: create an appointment page, it's display, client information boxes and a place to add Custom CSS.
  • Client Accessibility: you can choose whether or not to require login before scheduling
  • Payment Settings: choose whether you will accept payments
  • Notification Settings: option to set up confirmation and reminder emails for client and/or providers
  • Performance Settings: Caching options

[

General Settings

Working Hours

Set your hours of operation and Break Times.  Think Business Hours and 'Out to Lunch'.  You can even specify different hours for different service providers.  Makes it easy to keep track of differing schedules! [

Working Hours

Exceptions

Days off, holidays, scheduled maintenance, etc.  You can add them all here.  You can also define working days that are normally non-work days (i.e. a particular Sunday).  These are also able to be set per service provider. [

Exceptions

Services

What do you do?! What do you provide?!  This is where you lay it all out.  Set a capacity, price and even a description page. [

Services

Service Providers

It is not required that you have more than one person available doing what gets done, but if you do, here is where you keep track of them all.  You can even add Additional fees and assign more than one service to a provider.  Even attach them to a Bio page.  Note: this tab will not populate until you have at least one service listed in the Services tab. [

Service Providers

Logs

Keep up with what is happening by checking your Logs.  This nifty tab is where you will find updates on everything that happens on your site.  Status changes, transactions and the like. [

Logs

Shortcodes

Heaps of Shortcodes for your use. Insert provider or client specific tables, dropdown of services, table for appointment scheduling, monthly views, social login pagination, list all upcoming appointments, PayPal and a couple of parameters for those. You can find a complete documentation of shortcodes below or use the visual shortcode generator.

image

Appointments+ Shortcode Reference

With Appointments+, we have now added a handy shortcode generator, located above the WordPress text editor in visual mode, that allows you to simply select your requirements for the calendar you wish to display, and then be provided with the exact shortcode to use.

However, some of us still like to do things the old fashioned way, and create our shortcodes by hand, so we have included all of the current shortcodes in this handy guide for your reference and reading pleasure.

Provider Monthly Calendar

[app_worker_monthly_calendar]

Description

Renders a calendar with appointments assigned to a service provider.

Arguments

status

  • Show Appointments with this status (comma-separated list)
  • Allowed values: paid, confirmed, pending, completed
  • Example: [app_worker_monthly_calendar status=”paid,confirmed”]

_worker_id
_

  • Show Appointments calendar for service provider with this user ID
  • Example: [app_worker_monthly_calendar  worker_id=”32″]

start_at

  • Show Appointments calendar for this month. Defaults to current month.
  • Example: [app_worker_monthly_calendar start_at=”2013-07-01″]

Weekly Calendar

[app_schedule]

Description

Creates a weekly table whose cells are clickable to apply for an appointment.

Arguments

_
title_

  • Text that will be displayed as the schedule title. Placeholders START and END will be automatically replaced by their real values.
  • Example: [app_schedule title=”Our schedule from START to END”]
    Text that will be displayed after the title only to the clients who are logged in or you don’t require a login.
  • Example: [app_schedule logged=”Click on a free time slot to apply for an appointment.”]

_
notlogged_

  • Text that will be displayed after the title only to the clients who are not logged in and you require a login. LOGIN_PAGE will be replaced with your website’s login page, while REGISTRATION_PAGE will be replaced with your website’s registration page.
    Example: [app_schedule notlogged=”You need to login to make an appointment. Please click here to register/login: LOGIN_PAGE”]

_
service_

  • Enter service ID only if you want to force the table display the service with entered ID.
  • Default: “0” (Service is selected by dropdown).
  • Note: Multiple selections are not allowed.
  • Example: [app_schedule service=”12″]

_
worker_

  • Enter service provider ID only if you want to force the table display the service provider with entered ID.
  • Default: “0” (Service provider is selected by dropdown).
  • Note: Multiple selections are not allowed.
  • Example: [app_schedule worker=”15″]

long

  • If entered 1, long week days are displayed on the schedule table row, e.g. “Saturday” instead of “Sa”.
  • Example: [app_schedule long=”1″]

class

  • A css class name for the schedule table. Default is empty.
  • Example: [app_schedule class=”my-class”]

_
add_

  • Number of weeks to add to the schedule to use for preceding weeks’ schedules. Enter 1 for next week, 2 for the other week, so on. Default: “0” (Current week)
  • Example: [app_schedule add=”1″]

_
date_

  • Normally calendar starts from the current week. If you want to force it to start from a certain date, enter that date here. Most date formats are supported, but YYYY-MM-DD is recommended.
  • Notes: 1) This value will also affect other subsequent calendars on the same page. 2) Date value will not change starting day of week. It is sufficient to enter a date inside the week. Default: “0” (Current week)
  • Example: [app_schedule date=”2014-02-01″]

_
require_provider_

  • Setting this argument to “1” means a timetable will not be rendered unless a service provider has been previously selected.
  • Example: [app_schedule require_provider=”1″]

required_message

  • The message that will be shown if service providers are required.
  • Example: [app_schedule required_message=”Please, select a service.”]

require_service

  • Setting this argument to “1” means a timetable will not be rendered unless a service has been previously selected.
  • Example: [app_schedule require_service=”1″]

required_service_message

  • The message that will be shown if services are required.
  • Example: [app_schedule required_service_message=”Please, select a service.”]

Monthly Calendar

[app_monthly_schedule]

Description

Creates a monthly calendar plus time tables whose free time slots are clickable to apply for an appointment.

Arguments

title

  • Text that will be displayed as the schedule title.
  • Placeholders START, WORKER and SERVICE will be automatically replaced by their real values.
  • Example: [app_monthly_schedule title=”Our schedule for START”]

logged

  • Text that will be displayed after the title only to the clients who are logged in or you don’t require a login.
  • Example: [app_monthly_schedule logged=”Click a free day to apply for an appointment.”]

notlogged

  • Text that will be displayed after the title only to the clients who are not logged in and you require a login.
  • LOGIN_PAGE will be replaced with your website’s login page, while REGISTRATION_PAGE will be replaced with your website’s registration page.
  • Example: [app_monthly_schedule notlogged=”You need to login to make an appointment. Please click here to register/login: LOGIN_PAGE”]

service

  • Enter service ID only if you want to force the table display the service with entered ID.
  • Default: “0” (Service is selected by dropdown).
  • Note: Multiple selections are not allowed.
  • Example: [app_monthly_schedule service=”12″]

worker

  • Enter service provider ID only if you want to force the table display the service provider with entered ID.
  • Default: “0” (Service provider is selected by dropdown).
  • Note: Multiple selections are not allowed.
  • Example: [app_monthly_schedule worker=”15″]

long

  • If entered 1, long week days are displayed on the schedule table row, e.g. “Saturday” instead of “Sa”.
  • Example: [app_monthly_schedule long=”1″]

class

  • A css class name for the schedule table. Default is empty.
  • Example: [app_monthly_schedule class=”my-class”]

add

  • Number of months to add to the schedule to use for preceding months’ schedules. Enter 1 for next month, 2 for the other month, so on.
  • Default: “0” (Current month)
  • Example: [app_monthly_schedule add=”1″]

date

  • Normally calendar starts from the current month. If you want to force it to start from a certain date, enter that date here.
  • Most date formats are supported, but YYYY-MM-DD is recommended.
  • Notes: 1) This value will also affect other subsequent calendars on the same page. 2) It is sufficient to enter a date inside the month. Default: “0” (Current month)
  • Example: [app_monthly_schedule date=”2014-02-01″]

require_provider

  • Setting this argument to “1” means a timetable will not be rendered unless a service provider has been previously selected.
  • Example: [app_monthly_schedule require_provider=”1″]

required_message

  • The message that will be shown if service providers are required.
  • Example: [app_monthly_schedule required_message=”Please, select a service provider.”]

require_service

  • Setting this argument to “1” means a timetable will not be rendered unless a service has been previously selected.
  • Example: [app_monthly_schedule require_service=”1″]

required_service_message

  • The message that will be shown if services are required.
  • Example: [app_monthly_schedule  required_service_message=”Please, select a service.”]

Pagination

[app_pagination]

Description

Inserts pagination codes (previous, next week or month links) and Legend area.

Arguments

step

  • Number of weeks or months that selected time will increase or decrease with each next or previous link click. You may consider entering 4 if you have 4 schedule tables on the page.
  • Example: [app_pagination step=”1″]

month

  • If entered 1, step parameter will mean month, otherwise week. In short, enter 1 for monthly schedule.
  • Example: [app_pagination month=”1″]

date

  • This is only required if this shortcode resides above any schedule shortcodes. Otherwise it will follow date settings of the schedule shortcodes.
  • Default: “0” (Current week or month)

anchors

  • Setting this argument to 0 will prevent pagination links from adding schedule hash anchors.
  • Default: “1”
  • Example: [app_pagination anchors=”1″]

All Upcoming Appointments

[app_all_appointments]

Description

Inserts a table that displays all upcoming appointments.

Arguments

title

  • Title text.
  • Example: [app_all_appointments title=”All Appointments”]

status

  • Which status(es) will be included.
  • Possible values: paid, confirmed, completed, pending, removed, reserved or combinations of them separated with comma.
  • Example: [app_all_appointments status=”paid,confirmed”]

order_by

  • Sort order of the appointments.
  • Possible values: ID, start. Optionally DESC (descending) can be used, e.g. “start DESC” will reverse the order.
  • Default: “start”.
  • Note: This is the sort order as page loads. Table can be dynamically sorted by any field from front end (Some date formats may not be sorted correctly).
  • Example: [app_all_appointments order_by=”start”]

My Upcoming Appointments

[app_my_appointments]

Description

Inserts a table where client or service provider can see his upcoming appointments.

Arguments

provider

  • Enter 1 if this appointment list belongs to a service provider.
  • Default: “0” (client)
  • Example: [app_my_appointments provider=”1″]

provider_id

  • Enter the user ID of the provider whose list will be displayed. If ommitted, current service provider will be displayed.
  • Default: “0” (current service provider)
  • Example: [app_my_appointments provider_id=”12″]

title

  • Title text.
  • Example: [app_my_appointments title=”My Appointments”]

status

  • Which status(es) will be included. Possible values: paid, confirmed, completed, pending, removed, reserved or combinations of them separated with comma.
  • Allowed values: paid, confirmed, pending, completed, removed, reserved
  • Example: [app_my_appointments status=”paid,confirmed”]

gcal

  • Enter 0 to disable Google Calendar button by which clients can add appointments to their Google Calendar after booking the appointment.
  • Default: “1” (enabled – provided that “Add Google Calendar Button” setting is set as Yes)

order_by

  • Sort order of the appointments.
  • Possible values: ID, start.
  • Example: [app_my_appointments order_by=”ID”]

order

  • Sort order of the appointments.
  • Possible values: asc (ascendant order), desc (descendant order).
  • Example: [app_my_appointments order=”asc”]

allow_cancel

  • Enter 1 if you want to allow cancellation of appointments by the client using this table. “Allow client cancel own appointments” setting must also be set as Yes.
  • Default: “0” (Cancellation is not allowed).
  • Example: [app_my_appointments allow_cancel=”1″]

strict

  • Ensure strict matching when searching for appointments to display. The shortcode will, by default, use the widest possible match.
  • Example: [app_my_appointments strict=”1″]

Available Services

[app_services]

Description

Creates a dropdown menu of available services.

Arguments

select

  • Text above the select menu. Default: “Please select a service”
  • Example: [app_services select=”Please select a service:”]

show

  • Button text to show the results for the selected. Default: “Show available times”
  • Example: [app_services show=”Show available times”]

description

  • WSelects which part of the description page will be displayed under the dropdown menu when a service is selected .
  • Default: “excerpt”
  • Allowed values: none, excerpt, content
  • Example: [app_services description=”content”]

thumb_size

  • Inserts the post thumbnail if page has a featured image.
  • Selectable values are “none”, “thumbnail”, “medium”, “full” or a 2 numbers separated by comma representing width and height in pixels, e.g. 32,32.
  • Default: “96,96”
  • Example: [app_services thumb_size=”thumbnail”]

thumb_class

  • css class that will be applied to the thumbnail.
  • Default: “alignleft”
  • Example: [app_services thumb_class=”my-class”]

autorefresh

  • If set as 1, Show button will not be displayed and page will be automatically refreshed as client changes selection.
  • Note: Client cannot browse through the selections and thus check descriptions on the fly (without the page is refreshed).
  • Default: “0” (disabled). Recommended for sites with a large number of services.
  • Example: [app_services autorefresh=”1″]

order_by

  • Sort order of the services. Possible values: ID, name, duration, price. Optionally DESC (descending) can be used, e.g. “name DESC” will reverse the order.
  • Default: “ID”
  • Example: [app_services order_by=”ID”]

worker

  • In some cases, you may want to display services which are given only by a certain provider. In that case enter provider ID here.
  • Default: “0” (all defined services).
  • Note: Multiple selections are not allowed.
  • Example: [app_services worker=”12″]

ajax

  • If set as 1, Services thumbnails and descriptions will be loaded by AJAX. Recommended for sites with many services
  • Example: [app_services ajax=”1″]

Available Providers

[app_service_providers]

Description

Creates a dropdown menu of available service providers.

Arguments

select

  • Text above the select menu.
  • Default: “Please select a service”
  • Example: [app_service_providers select=”Please choose a service provider:”]

empty_option

  • Empty option label for the selection
  • Example: [app_service_providers empty_option=”Please, select”]

show

  • Button text to show the results for the selected.
  • Default: “Show available times”
  • Example: [app_service_providers show=”Show available times”]

description

  • Selects which part of the bio page will be displayed under the dropdown menu when a service provider is selected .
  • Default: “excerpt”
  • Allowed values: none, excerpt, content
  • Example: [app_service_providers description=”content”]

thumb_size

  • Inserts the post thumbnail if page has a featured image.
  • Selectable values are “none”, “thumbnail”, “medium”, “full” or a 2 numbers separated by comma representing width and height in pixels, e.g. 32,32.
  • Default: “96,96”
  • Example: [app_service_providers thumb_size=”thumbnail”]

thumb_class

  • css class that will be applied to the thumbnail.
  • Default: “alignleft”
  • Example: [app_service_providers thumb_class=”my-class”]

autorefresh

  • If set as 1, Show button will not be displayed and page will be automatically refreshed as client changes selection.
  • Note: Client cannot browse through the selections and thus check descriptions on the fly (without the page is refreshed).
  • Default: “0” (disabled)
  • Example: [app_service_providers autorefresh=”1″]

order_by

  • Sort order of the service providers.
  • Possible values: ID, name. Optionally DESC (descending) can be used, e.g. “name DESC” will reverse the order.
  • Default: “ID”
  • Example: [app_service_providers order_by=”ID”]

service

  • In some cases, you may want to force to display providers who give only a certain service. In that case enter service ID here.
  • Default: “0” (list is determined by services dropdown).
  • Note: Multiple selections are not allowed.
  • Example: [app_service_providers service=”12″]

require_service

  • Do not show service provider selection at all until the service has been previously selected.
  • Example: [app_service_providers require_service=”1″]

Login Buttons

[app_login]

Description

Inserts front end login buttons for Facebook, Twitter and WordPress.

Arguments

login_text

  • Text above the login buttons, preceded by a login link.
  • Default: “Please click here to login:”
  • Example: [app_login login_text=”Please click here to login:”]

redirect_text

  • Javascript text if front end login is not set and user is redirected to login page
  • Example: [app_login redirect_text=”Login required to make an appointment. Now you will be redirected to login page.”]

PayPal

[app_paypal]

Description

Inserts PayPal Pay button and form.
For the shortcode parameters, you can use SERVICE, PRICE, CURRENCY placeholders which will be replaced by their real values.

Arguments

item_name

  • Item name that will be seen on Paypal.
  • Default: “Payment for SERVICE” if deposit is not asked, “Deposit for SERVICE” if deposit is asked
  • Example: [app_paypal item_name=”Payment for SERVICE”]

button_text

  • Text that will be displayed on Paypal button.
  • Default: “Please confirm PRICE CURRENCY payment for SERVICE”
  • Example: [app_paypal button_text=”Please confirm PRICE CURRENCY payment for SERVICE”]

Appointment Confirmation

[app_confirmation]

Description

Inserts a form which displays the details of the selected appointment and has fields which should be filled by the client.
This shortcode is always required to complete an appointment.

Arguments

title

  • Text above fields.
  • Default: “Please check the appointment details below and confirm:”
  • Example: [app_confirmation title=”Please check the appointment details below and confirm:”]

button_text

  • Text of the button that asks client to confirm the appointment.
  • Default: “Please click here to confirm this appointment”
  • Example: [app_confirmation button_text=”Please click here to confirm this appointment”]

confirm_text

  • Javascript text that will be displayed after receiving of the appointment. This will only be displayed if you do not require payment.
  • Default: “We have received your appointment. Thanks!”
  • Example: [app_confirmation confirm_text=”We have received your appointment. Thanks!”]

warning_text

  • Javascript text displayed if client does not fill a required field.
  • Default: “Please fill in the requested field”
  • Example: [app_confirmation warning_text=”Please fill in the requested field”]

name

  • Descriptive title of the field.
  • Example: [app_confirmation name=”Your name:”]

email

  • Descriptive title of the field.
  • Example: [app_confirmation email=”Your email:”]

phone

  • Descriptive title of the field.
  • Example: [app_confirmation phone=”Your phone:”]

address

  • Descriptive title of the field.
  • Example: [app_confirmation address=”Your address:”]

city

  • Descriptive title of the field.
  • Example: [app_confirmation city=”City:”]

note

  • Descriptive title of the field.
  • Example: [app_confirmation note=”Your notes:”]

gcal

  • Text that will be displayed beside Google Calendar checkbox.
  • Default: “Open Google Calendar and submit appointment”
  • Example: [app_confirmation gcal=”Access Google Calendar and submit appointment”]
You can’t perform that action at this time.