=== Five Star Business Profile and Schema ===
Contributors: FiveStarPlugins
Author URI: https://www.fivestarplugins.com/
Plugin URL: https://www.fivestarplugins.com/plugins/business-profile/
Requires at Least: 5.3
Tested Up To: 6.9
Tags: business profile, seo, local seo, schema, address, google map, contact, phone, contact card, vcard, contact info, business location, business address, business map, business schema, organization schema, corporation schema, contact schema, address schema, location schema, map schema, business structured data, business microdata, address microdata, location structured data, location microdata, contact shortcode, location shortcode, address shortcode, schema shortcode, gutenberg schema, gutenberg address
Stable tag: 2.3.16
License: GPLv3
License URI:http://www.gnu.org/licenses/gpl-3.0.html

Add structured data to any page or post type. Create an SEO friendly contact card with your business info and associated schema. Supports Google Map, opening hours and more.

== Description ==

Add schema structured data to any page and/or post type on your site. Also easily create a contact card to add all your business details with the correct structured data. Enhance your site with SEO friendly Schema.org markup!

<strong>The plugin includes a Gutenberg contact card block as well as a contact card shortcode, so you can display your business info, with included structured data, on any page, no matter which page editing system you are using.</strong>

= Key Features =

* Add LD+JSON structured data to any or every page or post on your site
* Support for all organization schema types
* Support for all schema rich results types
* Customize general/global schema data on the post edit screen
* Create an SEO-friendly contact card that you can add via Gutenberg block or shortcode
* Easily include a Google map, opening hours and all your business details
* Add multiple locations
* Test any page on your site using Google's Rich Results Test

<em>Five Business Profile and Schema is very user friendly and comes with a walk-through that runs automatically when you activate the plugin and will help you add your business info, create your contact card and add a schema rule.</em>

[youtube https://www.youtube.com/watch?v=QuDl7m2okYc]

= Add Structured Data to Any Page =

The plugin comes with a database of every organization type schema and every rich results type. With this you can easily create a new schema element and assign a specific structured data type to a page, an individual post, an entire post type, or to your site as a whole.

Each schema and rich results type comes with its corresponding properties/fields, as per schema.org. When you add a schema element, you can fill in each of these properties with defaults that you want to apply to all posts/pages that have the schema. You can then customize each property directly on the post edit screen, should you need to make a change for a specific page or post.

Whether you're running your website for a local business, a corporation, a restaurant, a specific project, a sports team, or any other type of organization, with just a few clicks, you can have the correct schema added to your pages, to help enhance your results in search engines!

= Business Profile Contact Card =

The Five Star Business Profile and Schema plugin is also perfect for adding your contact details to any page on your site. It comes with a handy form to help you fill in your info, which then gets automatically included on your site both as a contact card and as schema structured data, using the new LD+JSON format.

Your contact card can be quickly added anywhere on your site using a block, shortocde or widget, which will display the folling info:

* Business name
* Address
* Phone number with separate click-to-call phone number
* Cell phone number with click-to-call functionality
* Whatsapp number with click-to-call functionality
* Fax number
* Contact page link or email address
* Link to Google Map with directions to your establishment
* Google Map showing your location
* Opening hours
* Exceptions for opening hours, to specify days that are closed or have different hours (e.g. holidays)

For all of this information, the correct schema.org markup is added LD+JSON format. This helps search engines, like Google, discover your address, phone number and opening hours, so they can display them with your listing on Google.

Choose from a wide array of microdata item types for your business schema, including:

* Corporation schema
* Organization schema
* Local Business schema
* Restaurant schema
* Many more!

= Google Maps Structured Data = 

The integrated Google Maps features allow you to enhance your location structured data by displaying a business map on your site with full schema support. Your business location, including the business address, will be displayed on a map (with the correct map schema), as well as in text with the correct location microdata.

= Multiple Locations = 

Business Profile supports multiple locations. This powerful feature works great for businesses that have several offices, for delivery services, for restaurants with multiple locations, etc. Business location schema is added to each entry and you can showcase your details using the Gutenberg schema block, via the location shortcode or with the included widget. For help getting started with this, you can visit:
 
[https://doc.fivestarplugins.com/plugins/business-profile/user/multiple-locations](https://doc.fivestarplugins.com/plugins/business-profile/user/multiple-locations)

The multiple location structured data for your business also syncs up with the Five Star Restaurant Reservations to automatically offer a dropdown in your reservation form, so people can pick which location they want to book at.

You can choose separate organization schema, corporation schema or local business schema for each new location you create, so each schema shortcode and each page's contact info is uniquely optimized with SEO and search results in mind.

[youtube https://www.youtube.com/watch?v=NIB0iFC4tCM]

= Premium Schema Features =

The premium version of the Five Star Business Profile and Schema plugin comes with several extra features that will help you set up and refine your structured data more quickly and more accurately. 

These include a default helper functionality for your schema. This option adds a large list of default values to the plugin and allows you to easily populate each schema property with one of these values. No need to be familiar with all the different schema properties and types. Just choose the default you want from the included list and you're off and running!

The premium version also includes new integrations that will help you automatically apply specific structured data to certain areas of your site. For example, the WooCommerce Integration option will automatically add full Product schema to your WooCommerce shop, helping to enhance the search results for your products. 

There is also a posts integration option, which will automatically add Article rich snippets to the default Posts post type. This way, all your articles and blog posts can have the correct schema, without the need for manually inputting it each time you add a new post.

The premium version also syncs with our Five Star Restaurant Manager mobile app (available for iOS and Android) and lets you update your business and contact card info on the go, from a phone or tablet, and without having to be logged in to your WordPress site.

Key premium features include:

* Schema default helpers, which let you choose defaults for all schema properties.
* Post rich snippets, to automatically add full Article schema.org markup to posts
* WooCommerce Integration, to automatically add full Product structured data to your shop.
* Access to the Five Star Restaurant Manager mobile app, to manage your business and contact card info on the go. 

This schema structured data and contact card plugin is one part of our suite of plugins designed to give you the best WordPress business and restaurant experience. Our plugins provide an intuitive and easy-to-use interface that make sure you don't lose out on business to your competitors. For more info:

* [Restaurant Reservations](https://wordpress.org/plugins/restaurant-reservations/) plugin that lets your customers reserve a table directly on your site.

* [Restaurant Menu](https://wordpress.org/plugins/food-and-drink-menu/) plugin that lets your customers view your full menu directly on your site.

= For help and support, please see: =

* Our documentation and user guide, here: [https://doc.fivestarplugins.com/plugins/business-profile/user/](https://doc.fivestarplugins.com/plugins/business-profile/user/)
* Our FAQ page, here: [https://wordpress.org/plugins/business-profile/faq/](https://wordpress.org/plugins/business-profile/faq/)
* Our installation guide, here: [https://wordpress.org/plugins/business-profile/installation/](https://wordpress.org/plugins/business-profile/installation/)
* Our tutorial videos, here: [https://www.youtube.com/playlist?list=PLEndQUuhlvSoOidQF7iRvstiKjOT4tX71](https://www.youtube.com/playlist?list=PLEndQUuhlvSoOidQF7iRvstiKjOT4tX71)
* The Business Profile and Schema support forum, here: [https://wordpress.org/support/plugin/business-profile/](https://wordpress.org/support/plugin/business-profile/)
* Our Support Center, here: [https://www.fivestarplugins.com/support-center/](https://www.fivestarplugins.com/support-center/)

= Developers =

This plugin is packed with templates and hooks so you can extend it as needed. Read the [developer documentation](https://doc.fivestarplugins.com/plugins/business-profile/developer/). 

== Installation ==

1. Upload the 'business-profile' folder to the '/wp-content/plugins/' directory
2. Activate the plugin through the 'Plugins' menu in WordPress

or

1. Go to the 'Plugins' menu in WordPress and click 'Add New'
2. Search for 'Business Profile' and select 'Install Now'
3. Activate the plugin when prompted

= Getting Started =

After activating the plugin, <strong>a walk-through will run automatically</strong>, which will help add your business info, create a contact card and set up some structured data.

You can also follow these steps to configure the plugin. 

1. To create a business profile with schema structured data:
    * Click on 'Business Profile' in the WordPress admin sidebar menu. This will bring you to the page where you can create or edit your contact card
    * Choose a schema type and then file in the company contact info.
    * Set up a schedule/opening hours for your location.
    * Click Save Changes and it will automatically save your vcard business info.

2. Adding your contact card and business profile to a page:
    * Gutenberg: Click the + icon to add a new block to your page, and then search for the block called Contact Card. Just add that to your page and your address and schema will show on that page.
    * Shortcode: Add the [contact-card] schema shortcode to any page and your business location and structured data will be added to that page.

3. To add a map and schema to your business profile:
    * Go to the settings page and insert your Google Maps API Key.
    * This will insert your location with Google map schema.

4. Enable multiple locations, each with unique business structured data.
    * Go to the settings page and toggle on the switch for multiple locations.
    * This will create a new menu item in your WordPress admin called Locations.
    * Click on Locations to add new and edit existing locations.
    * Now, each individual address will have its own unique business schema type and custom location structured data.
    
5. Customize your location schema and business contact card by making use of the available options, found in the Settings area of the plugin admin.

For a list of specific features, see the Business Profile description page here: https://wordpress.org/plugins/business-profile/.

= For help and support, please see: =

* Our documentation and user guide, here: [https://doc.fivestarplugins.com/plugins/business-profile/user/](https://doc.fivestarplugins.com/plugins/business-profile/user/)
* Our FAQ page, here: [https://wordpress.org/plugins/business-profile/faq/](https://wordpress.org/plugins/business-profile/faq/)
* Our tutorial videos, here: [https://www.youtube.com/playlist?list=PLEndQUuhlvSoOidQF7iRvstiKjOT4tX71](https://www.youtube.com/playlist?list=PLEndQUuhlvSoOidQF7iRvstiKjOT4tX71)
* The Business Profile and Schema support forum, here: [https://wordpress.org/support/plugin/business-profile/](https://wordpress.org/support/plugin/business-profile/)
* Our Support Center, here: [https://www.fivestarplugins.com/support-center/](https://www.fivestarplugins.com/support-center/)


== Frequently Asked Questions ==

= Is there a Gutenberg block to display the contact card? =

Yes, just search for the 'Contact Card' block and add that to your page.

= Is there a shortcode to display the contact card? =

Yes, you can use `[contact-card]`. Our documentation includes [all of the shortcode attributes](https://doc.fivestarplugins.com/plugins/business-profile/user/blocks-shortcodes/contact-card-shortcode).

= It asks me for a Google Maps API Key but I don’t know what it is or how to get it. =

Google now requires that you have your own API key to display a map on your website. The documentation includes a walkthrough to help you [generate a Google Maps API key](https://doc.fivestarplugins.com/plugins/business-profile/user/settings/google-maps-api-key).

= Google Maps shows my business in the wrong location =

Unfortunately, in some cases Google is unable to find the right latitude and longitude to match your address.

In some cases, you may be able to get it to properly locate you by tweaking the address. Sometimes Google just needs a bit of help. Once you’ve got the right coordinates you can go back and restore your original address, and save the form without touching the coordinates again.

If you’re unable to get Google to recognize your location, the best thing to do is to leave the Google Map out when you print your contact card. You will also want to hide the Get Directions link, because Google will guide your customers to the wrong location.

There’s not much I can do about this, unfortunately. Even if you were able to manually set the latitude and longitude, Google would still show bad directions, because it uses the address, not the coordinates, for this feature.

= What’s a schema type? =

This allows you to let search engines like Google know exactly what kind of business you run.

That way, when someone looks for a real estate agent or a restaurant in your area, they’ll know to include you in their search results.

You may not find a type that’s a perfect match for your business. Choose the option that’s most appropriate for your business, and fall back to a more generic type, such as Local Business, if you need.

= More questions =

You'll find more help in the [User Guide](https://doc.fivestarplugins.com/plugins/business-profile/user/). Developers interested in templates, filters and theme support can view the [Developer Documentation](https://doc.fivestarplugins.com/plugins/business-profile/developer/).

= For help and support, please see: =

* Our documentation and user guide, here: [https://doc.fivestarplugins.com/plugins/business-profile/user/](https://doc.fivestarplugins.com/plugins/business-profile/user/)
* Our tutorial videos, here: [https://www.youtube.com/playlist?list=PLEndQUuhlvSoOidQF7iRvstiKjOT4tX71](https://www.youtube.com/playlist?list=PLEndQUuhlvSoOidQF7iRvstiKjOT4tX71)
* The Business Profile and Schema support forum, here: [https://wordpress.org/support/plugin/business-profile/](https://wordpress.org/support/plugin/business-profile/)
* Our Support Center, here: [https://www.fivestarplugins.com/support-center/](https://www.fivestarplugins.com/support-center/)


== Screenshots ==

1. Showing the LD+JSON structured data output on a post page.
2. Showing the LD+JSON structured data output on a WooCommerce product page.
3. Contact card with all added contact info, opening hours and a map.
4. Structured data output for contact card.
5. Feature to add an ordering link to your contact card for your menu page built with the Five Star Restaurant Menu plugin.
6. Contact card with schedule exceptions.
7. Contact card for a specific location.
8. The schema create/edit screen.
9. An example of the schema advanced helper fields/defaults.
10. An easy-to-use form lets you add all of the information, locate the correct map coordinates and set up your opening hours.
11. Add a contact card to any page or post with the block.
12. Optional multi-location support to easily display all of your locations.
13. Location edit screen.
14. Choose what information to display with the widget, or check out the shortcode attributes in the help document included.


== Changelog ==

= 2.3.16 (2025-11-19) =
- Patch for reported Patchstack vulnerability.

= 2.3.15 (2025-09-23) =
- Updated admin notice capabilities

= 2.3.14 (2025-07-08) =
- Fix for an error that sometimes occurred when trying to output the contact card for your main location if you did not have exceptions.

= 2.3.13 (2025-07-07) =
- You can now set date ranges for exceptions. 
- Exceptions are now displayed in date order on front end.

= 2.3.12 (2025-04-29) =
- Tested with WordPress 6.8.

= 2.3.11 (2025-04-24) =
- Fix: Contact page label was not showing.

= 2.3.10 (2024-11-25) =
- Tested with WordPress 6.7.

= 2.3.9 (2024-07-16) =
- Tested with WordPress 6.6.

= 2.3.8 (2024-04-03) =
- Added async loading to Google Maps.
- Tested for compatibility with WP 6.5 and PHP 8.2, and eliminated/fixed deprecated notices associated with this.

= 2.3.7 (2023-12-18) =
- Added "show book a table link" (from the Five Star Restaurant Reservations plugin) as a parameter to the contact card block.
- Fix for time picker not using your chosen time format when first adding a new scheduling rule on the location edit screen.
- Added check to make sure value exists before calling html_entity_decode(), to correct a PHP 8.1 deprecated notice.

= 2.3.6 (2023-11-07) =
- Fix: Location ordering link field had wrong input type.
- Tested for WordPress 6.4 compatibility/support.

= 2.3.5 (2023-08-08) =
- Tested for WordPress 6.3 compatibility/support.

= 2.3.4 (2023-03-31) =
- Added new contact card layouts (premium).
- Added contact card styling options (premium).
- Added the ability (to the premium version) to create custom fields that can be used in your contact card(s). Custom field values can be set both for the main location and for individual locations.
- Added an 'Ordering Link' setting to each location, so that individual locations can have their own ordering/menu link.
- Added a checkbox to disable the display of main exceptions for individual locations.
- Updated block to be compatible with WordPress 6.2.
- Fixed an issue where the walk-through sometimes wouldn't run on plugin activation.

= 2.3.3 (2023-01-04) =
- Fixes a potential fatal error on the settings page.

= 2.3.2 (2023-01-03) =
- Update to correct an issue that could cause an error to display on the settings page.
- Fixed an issue with day names not correctly displaying in some languages and/or if using the labelling options.

= 2.3.1 (2022-12-23) =
- Fixed an issue related to the contact labelling option that was causing an error.
- Fixed an issue in which the admin area wasn't styled for certain languages.

= 2.3.0 (2022-12-21) =
- Added new tutorial videos to the settings pages that explain and show what each option does.
- Added quick links to the admin about page to re-run the walk-through, view tutorial videos and suggest a feature.
- Fixed issues causing several labelling options to not apply on the front end.
- Fixed an issue in which the time pickers for the opening hours for secondary locations weren't making use of the Time Format specified in the Basic settings.
- Tested with PHP 8.1 and updated deprecated function use.

= 2.2.5 (2022-08-22) =
- Updating a condition to make sure the new block patterns don't cause an error on WordPress installations using a version of WordPress older than 5.5.

= 2.2.4 (2022-08-08) =
- Added an extra option to specify a display number for the Whatsapp field, so you can display a different number in the contact card than the one that is used to send the message.
- Corrected an issue that was causing invalid schema. 
- Removed the trailing comma from the newly-added instance of register_block_pattern_category, to correct an apparent conflict with proxy fcgi, as reported by one user.

= 2.2.3 (2022-08-03) =
- Introducing new block patterns, which can be used to integrate contact card info directly into your block-based theme templates.
- Added fields for cell phone, fax and Whatsapp. 
- Added a new (premium) option that lets you re-order the elements in the contact card.
- Added in date and time formatting options for the scheduler in the admin.
- Fixed some issues with the layout/styling of the schema meta box on the post and product (WooCommerce) edit screens.

= 2.2.2 (2022-05-20) =
- Tested with WordPress 6.0.

= 2.2.1 (2022-02-18) =
- Update to counter an error with WP-CLI.

= 2.2.0 (2022-02-16) =
- Changed how premium settings areas are previewed.
- Removed unused packaging files.

= 2.1.10 (2022-01-31) =
- Fixed an issue in which, in certain instances, the plugin wouldn't reactivate after having been deactivated.

= 2.1.9 (2022-01-19) =
- Updated escaping function for the widget output.

= 2.1.8 (2022-01-18) =
- Updated sanitizing

= 2.1.7 (2022-01-14) =
- Added capability check to the walkthrough AJAX actions.

= 2.1.6 (2022-01-13) =
- Updated nonces in the plugin admin.
- Updated sanitizing and escaping.
- Removed external image assets.

= 2.1.5 (2021-09-30) =
- Updated the settings page library.
- Updated name of templates folder for consistent prefixing.
- Added an option so that, if you offer online ordering, you can enter the URL of your order page (can be on the same site or external) and a link to it will display in your contact card.
- Past exceptions no longer show in the schedule/opening hours, and are now automatically removed when the options are saved.
- Added "Image URL" field to the list of elements on the schema create/edit screen for the Organization schema type.
- Moved contact card block into its own category/section.

= 2.1.4 (2021-07-21) =
- The plugin has been tested up to WordPress version 5.8.

= 2.1.3 (2021-04-06) =
- Correcting an issue in which certain times were being output always in UTC and not using the timezone set in the WordPress general settings, which could create an offset in the time displayed for exceptions on the front end.
- Updated the order in which the exceptions are displayed on the front end, so that it is chronological and not using the order from the admin. 

= 2.1.2 (2021-03-08) =
- Update for the conditional enqueueing of assets in the admin.
- Styling fix for the location create/edit screen when using the classic editor.

= 2.1.1 (2020-10-16) =
- Updating the time format of exceptions to use the format you specified in your WP settings, like with regular opening hours.
- Updating the localization of exceptions (i.e. to make the month and day, etc. translatable).
- Updating the shortcode to also hide the exceptions if you're making use of the show_opening_hours attribute.
- Correcting issue causing duplicate structured data in the new JSON-LD formatting.
- Correcting issue causing times >= 12pm to sometimes show incorrectly in the JSON code.

= 2.1.0 (2020-10-13) =
- <strong>This is a relatively big update with several new features and corrections, etc., so please take caution and test before updating on a live site (or wait a few days before updating in case some minor corrective updates need to be released).</strong>
- Switched the structured data generated by the contact card to the new JSON-LD format.
- Added an option for a separate "click to call" phone number, applicable both to the main settings and to specific locations.
- Added a fallback functionality, so that, if you do not fill in a specific field (e.g. phone number) for an individual location, it will use what you set in the main settings.
- Added an option to turn off the automatic insertion of the contact card on the specified contact page.
- Added exceptions, so you now have the ability to have specific days that are either closed or have different hours (e.g. holidays), without having to alter your main schedule. Applicable both in the main settings and for specific locations.
- Added a button to the admin bar with a link to test the current page in Google's Rich Results Test.
- Added in a German translation that was submitted to us. 
- Generated a new .pot file. 

= 2.0.9 (2020-09-11) =
- Corrects recent issue causing the feedback notice to not dismiss correctly

= 2.0.8 (2020-08-12) =
- Fix for the initial walk-through and the chosen contact page not being populated
- Fix for default values not being applied
- Correcting/eliminating several PHP notices
- CSS updates for the admin panel
- Enhanced upgrade process

= 2.0.7 (2020-06-04) =
- Updating the admin dashboard area

= 2.0.6 (2020-04-30) =
- Styling updates for the scheduler on the location edit screen when multiple locations is enabled.

= 2.0.5 (2020-04-08) =
- Updating a few input fields to correct for possible minor XSS issues

= 2.0.4 (2020-03-27) =
- Added link/the ability to click to call to phone numbers in the contact card
- Added all the Organization types from the schema functionality as options in the Schema Type setting for the contact card
- Added a setup walk-through that runs on initial plugin activation
- Corrected some styling issues for the metaboxes on the location post type edit screen
- Updated some settings descriptions
- Corrected warning that sometimes came up in the Dashboard area of the admin when this and another Five Star plugin were both installed 

= 2.0.3 (2020-02-14) =
- Adds in a few more is_object checks to counter the command line interface installation not calling things in the correct order 

= 2.0.2 (2020-02-04) =
- Adds in an "if exists" check before checking the settings values

= 2.0.1 (2020-02-03) =
- Moving the multiple locations option back to the Basic settings page (it was accidentally moved to the premium section during the big update)

= 2.0.0 (2020-01-31) =
- <strong>This is a big update with many new features, corrections, revised admin styling, etc., so please take caution and test before updating on a live site (or wait a few days before updating in case some minor corrective updates need to be put out)</strong>
- The Options pages have a brand new and easy-to-use design, to go hand in hand with the many, many new options!
- Added in a new schemas functionality, to add structured data to any page or post
- Added in WooCommerce integration for the schema functionality
- Added in posts integration for the schema functionality
- Added in default helpers for the schema functionality
- Added in a walkthrough on installation to help you get going as quickly as possible
- Added in defaults for several options
- Added a Dashboard panel to the plugin admin
- Updated the styling of certain default features to be consistent with new features
- Other styling and ease-of-use changes
- Updated the order, layout and descriptions of several options