Connections Business Directory


Showcase | Documentation | Support | Templates | Extensions

Quite simply, Connections Business Directory is one of the best business directory plugins available for WordPress. Its simplicity in design and function, vast array of unique features and versatility are the reasons more and more people are turning to Connections Business Directory for their directory needs. You can use Connections to create a simple address book, maintain a staff or member directory and run a business directory or link directory. Connections Business Directory was built bottom up to be as configurable as possible while providing the features you need. Read on to learn about some of the best features Connections Business Directory has to offer…


  • Seamless integration with WordPress.
  • Highly rated support.
  • Continuously updated bringing you new features for free.
  • Dashboard admin page where you can see at a glance today’s anniversaries and birthdays as well as upcoming anniversaries and birthdays of members in your directory.
  • Multiple entry types from which to choose; such as individual, organization and family. The family entry type is unique to Connections. This entry type allows you to group individuals together as a family which makes Connections ideally suited for creating a church directory.
  • You control which entries are viewable to the public and which entries are private, viewable for logged in users only. You can even have entries set as unlisted so only admins can view them.
  • Repeatable fields for address, phone numbers, email, IM, social media, links and dates which allow you to add as much or as little as you need for each business in your business directory.
  • Hierarchical (nested) category support. Businesses and members in your business directory can be added to any number of categories.
  • Include a biographical text for an individual member or business description for each entry in your business directory using an easy to use rich text editor.
  • You can easily add a business logo or photo of the staff member for each entry in your business directory or staff directory. The photo and logo images are fully responsive with HiDPI (Retina) display support.
  • Scalable, manage directories which contain hundreds of thousands of entries.
  • CSV Export of addresses, phone numbers, email addresses and dates.
  • CSV Import of nested categories.
  • Role capability support.
  • Displaying your business directory on the frontend is as simple as putting a shortcode on a page. Don’t let this simplicity fool you. The shortcode provides a large array of options that are just too numerous to list. To learn more, go here.
  • SEO. Every entry in your business directory outputs following the hCard spec. Soon to be updated to following
  • Extensible and developer friendly.
  • Robust templating support with the Template Customizer. Several basic templates are provided to get you started with you business directory with many more premium templates available to really make your business directory shine.


Here are some great free extensions (with more on the way) that enhance your experience with Connections Business Directory:


  • Toolbar :: Provides quick links to the admin pages from the admin bar.
  • Login :: Provides a simple to use login shortcode and widget.
  • Anniversary and Birthday Emails :: Add the ability to automatically send a customizable email to entries on their anniversary or birthday.

Custom Fields


  • Face Detect :: Applies face detection before cropping an image.

Premium Extensions

  • Authored :: Displays a list of blog posts written by the entry on their profile page.
  • Contact :: Displays a contact form on the entry’s profile page to allow your visitors to contact the entry without revealing their email address.
  • CSV Import :: Bulk import your data in to your directory.
  • Custom Category Order :: Order your categories exactly as you need them.
  • Custom Entry Order :: Allows you to easily define the order that your business directory entries should be displayed.
  • Enhanced Categories :: Adds many features to the categories.
  • Form :: Allow site visitor to submit entries to your directory. Also provides frontend editing support.
  • Link :: Links a WordPress user to an entry so that user can maintain their entry with or without moderation.
  • ROT13 Encryption :: Protect email addresses from being harvested from your business directory by spam bots.
  • SiteShot :: Show a screen capture of the entry’s website.
  • Widget Pack :: A set of feature rich, versatile and highly configurable widgets that can be used to enhance your directory.

Premium Templates

Connections Business Directory comes with a couple templates to get you started which fully support the Template Customizer. In addition to these free templates there are many premium templates available to take your business directory the level visually.

  • Circled :: A simple but bold template specifically designed for displaying small team or staff directory.
  • cMap :: Our most popular go to template for a business directory and chamber of commerce business directory, featuring full Template Customizer support.
  • Excerpt Plus :: Simple design which features a directory entry name, photo thumbnail and excerpt.
  • Gridder :: Another simple but bold template which displays the directory in a grid layout. Perfect for displaying a small team or staff directory
  • Slim Plus :: Specifically designed to take up as little space on the page as possible.
  • Tile Plus :: This template was purposely designed to display the directory in a grid or column layout.

Developer Friendly

  • Open development on Github.
  • Access to 180 action hooks and over 300 filters … and counting.
  • Term API.
  • Custom Metabox and Fields API.
  • Template Engine and API.
  • Fragment Cache API.
  • Log API (stateless and stateful).
  • Admin Notices API.
  • Email API.
  • Settings API.

Connections Business Directory has a very flexible template engine. The loading of template and CSS are context aware. This means you could create specific templates that load when a user visits a specific entry, category, postal code and more.

Templates and CSS overriding is very granular and update safe. Check out these links for the details:


Connections Business Directory has been embraced around the world and has been translated by its users in the following languages.

  • Arabic [60% Complete]
  • Catalan [52% Complete]
  • Croatian (Croatia) [22% Complete]
  • Danish [31% Complete]
  • Danish (Denmark) [29% Complete]
  • Dutch (Netherlands) [49% Complete]
  • Finnish [78% Complete]
  • French (France) [90% Complete]
  • German (Germany) [86% Complete]
  • Greek (Greece) [69% Complete]
  • Hebrew (Israel) [61% Complete]
  • Hungarian (Hungry) [52% Complete]
  • Italian (Italy) [58% Complete]
  • Norwegian [13% Complete]
  • Persian (Iran) [52% Complete]
  • Polish (Poland) [52% Complete]
  • Portuguese (Brazil) [77% Complete]
  • Portuguese (Portugal) [24% Complete]
  • Romanian (Romania) [69% Complete]
  • Russian (Russia) [40% Complete]
  • Serbian (Latin) [2% Complete]
  • Spanish (Latin America) [49% Complete]
  • Spanish (Mexico) [99% Complete]
  • Spanish (Spain) [99% Complete]
  • Sweden (Swedish) [96% Complete]
  • Turkish (Turkey) [58% Complete]




A comprehensive list of FAQs can be found here.

How do I install Connections?

Installation instructions can be found here.

Using the WordPress Plugin Search

  1. Navigate to the Add New sub-page under the Plugins admin page.
  2. Search for connections business directory.
  3. The plugin should be listed first in the search results.
  4. Click the Install Now link.
  5. Lastly click the Activate Plugin link to activate the plugin.

Uploading in WordPress Admin

  1. Download the plugin zip file and save it to your computer.
  2. Navigate to the Add New sub-page under the Plugins admin page.
  3. Click the Upload link.
  4. Select Connections Business Directory zip file from where you saved the zip file on your computer.
  5. Click the Install Now button.
  6. Lastly click the Activate Plugin link to activate the plugin.

Using FTP

  1. Download the plugin zip file and save it to your computer.
  2. Extract the Connections Business Directory zip file.
  3. Create a new directory named connections directory in the ../wp-content/plugins/ directory.
  4. Upload the files from the folder extracted in Step 2.
  5. Activate the plugin on the Plugins admin page.
How do I display the business directory on my site?

We have a QuickStart available that’ll walk you thru the most basic setup. Basically all you need to do is, create a page, and add the [connections] shortcode and then start adding entries to your directory.

Will it work with my theme?

Connections Business Directory has been designed to work with any theme.

Is Connections Business Directory translation-ready?

Yes it is. Connections Business Directory comes with many user supplied translations. We use Transifex to manage translations. This service make it easy for us manage and easy for you to translate. To read more, see this page.

Is Connections Business Directory compatible with WordPress Multisite?

Yes it is. However, do not Network activate Connections. Activate it on only the subsites that you wish to use Connections.

Is it possible to share entries with other sites within a WordPress Multisite installation?

Yes this is possible but there is a special setup required to do so. It is recommended this is done before added entries to your business directory.

  1. Activate Connections Business Directory the primary site.
  2. Add define( 'CN_MULTISITE_ENABLED', FALSE ); to your wp-config.php file. NOTE: If you have added any entries to any of your subsites, that data will be lost as Connections will read the directory entry data from the primary site’s database tables.
  3. Activate Connections Business Directory on the subsites you wish to use Connections.
What are the requirements to run Connections?
  • WordPress version: >= 4.4
  • PHP version: >= 5.2.4 ( >= 7.0 is highly recommended)
  • NOTE: Upgrading from version 0.6.1 and newer only, is supported. Previous version must upgrade to 0.6.1 before upgrading to the current version.


A Super-Power Directory With GREAT Support

Steven Zahm has built an outstanding, full-featured membership directory plugin that works perfectly straight out of the box … but also allows you to easily tweak and customize the look and results in seconds.

Add to this Steven’s fast and friendly expert support, and you won’t have to look anywhere else for a directory plugin — Connections Business Directory exceeds expectations!


Love the plugin and had great service when it appeared to fail – though in fact it was another plugin that was causing the problem. Even so Steven identified the issue and fixed it. Couldn’t be happier.

great plugin, amazing support

This plugin is the best directory plugin available. Frequently updated, and the support is top notch. Steve replies to the forums on his page quickly and professionally, and will work with you to solve your issue. Id give Steve and this plugin 10 stars if I could.

Read all 313 reviews

Contributors & Developers

“Connections Business Directory” is open source software. The following people have contributed to this plugin.


“Connections Business Directory” has been translated into 1 locale. Thank you to the translators for their contributions.

Translate “Connections Business Directory” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.


Complete Changelog can be found here.

8.12 02/19/2018

  • NEW: Introduce several new timezone helper methods in cnDate.
  • TWEAK: Add options to the cnRetrieve::upcoming() method to suport whether or not to check user caps and from timestamp.
  • TWEAK: Add option to cnRetrieve::entries() to support whether or not to check user caps.
  • TWEAK: Remove a bunch of unused and unnecessary methods from cnDate.
  • TWEAK: Use cnDate::getWPUTCOffset() helper method in cnEntry_vCard::getUTCOffset().
  • TWEAK: Cast result of date(‘I’) to int.
  • BUG: The wp_script_is() requires a handle to check.
  • BUG: Correct array to string conversion PHP notice.
  • DEV: phpDoc corrections in cnDate.

8.11 02/05/2018

  • NEW: Add support for the plugin bannerS in plugin info REST API responses.
  • NEW: Add support for the plugin iconS in plugin info REST API responses.
  • NEW: Add support for opting into beta versions of the installed addons.
  • NEW: Introduce cnPlugn_Updater::maybe_unserialize_response().
  • NEW: Introduce cnText_Domain.
  • TWEAK: Check for DOING_AJAX when adjusting the addon update check and status check.
  • TWEAK: Clean plugin cache on addon activate/deactivate.
  • TWEAK: When doing addon status check use the same timeout as used during update checks when on the WP Updates admin page.
  • TWEAK: Update addon statuses after doing an update check.
  • TWEAK: Clean the plugin cache before running the addon status check.
  • TWEAK: Change the priority of addon status check to 9 on the WP Plugins admin page so it runs before the addon update check.
  • TWEAK: Utilize cnText_Domain to load the plugin translation files.
  • BUG: Ensure the $atts variable is an array before setting values when viewing all.
  • DEV: phpDoc corrections.
  • DEV: Update plugin header.

8.10 01/26/2018

  • NEW: Introduce abstract class cnEntry_Object_Collection.
  • NEW: Introduce abstract class cnEntry_Collection_Item.
  • NEW: Introduce class cnEntry_Phone_Numbers.
  • NEW: Introduce class cnPhone.
  • NEW: Introduce cnCSV_Batch_Export_All::getFields().
  • NEW: Create the phone tempalte files for hCard and the manage admin page.
  • NEW: Complete refactor of phone number model using cnEntry_Phone_Numbers and cnPhone objects.
  • TWEAK: Ensure upcoming dates are translated thru date_i18n().
  • TWEAK: Use the default address type rather than “other” when constructing a new address if type was not supplied.
  • TWEAK: Add phone number to the sanitize field method.
  • TWEAK: Make cnCSV_Batch_Export::getTerms() a public method.
  • TWEAK: Refactor cnCSV_Batch_Export_All and introduce filters for plugins to hook into.
  • TWEAK: PHP7.2 notice fix.
  • TWEAK: Rename “Field Configuration” settings tab to “Fieldset Configuration” for consistency.
  • TWEAK: Add “Fieldset” to the settings sections title for consistency.
  • TWEAK: Add the missing “Link Fieldset” settings section.
  • TWEAK: cnEntry property should not be init’d as a string since it is an cnEntry_Addresses object.
  • DEV: phpDoc corrections.

8.9 01/12/2018

  • FEATURE: Add email fieldset configuration options.
  • TWEAK: Minor tweaks to CN_parseCSV::parse_string() and CN_parseCSV::unparse() to use column indexes rather than column header names as the array index to allow duplicate column names in the source CSV file.
  • BUG: Link title and url fields were not being sanitized.
  • DEV: phpDoc corrections.

8.8 12/22/2017

  • FEATURE: Add phone fieldset configuration options.
  • TWEAK: Ensure jquery-form is registered, seems some plugin/theme is unregistering this core WP script.
  • TWEAK: Tweak to ensure Say What text changes can be applied to address type labels.
  • TWEAK: cnOptions::getRegisteredAddressTypes()` should return all active and inactive address types.
  • TWEAK: Deprecated cnOptions::getDefaultAddressValues()should return cnOptions::getAddressTypesOptions().
  • TWEAK: Minor CSS tweak to admin widget title, setting min height.
  • BUG: Fix PHP Warning: natsort() expects parameter 1 to be array, null given.

8.7.1 12/13/2017

  • TWEAK: Use strtolower() instead of mb_strtolower().
  • TWEAK: Use strtoupper() instead of mb_strtoupper().
  • TWEAK: Do not use ternary shorthand, requires PHP > 5.3.
  • BUG: Update minified CSS/JS files.
  • BUG: Remove placeholder string in settings.
  • DEV: Add couple phpDoc references.

8.7 12/12/2017

  • FEATURE: Introduce field configuration options for the Publish, Name and Address field sets.
  • NEW: Add United Kingdom counties to cnGEO.
  • NEW: Introduce cnGEO::getRegionName().
  • NEW: Introduce cnCountries.
  • NEW: Introduce the WP REST API countries endpoint/routes.
  • NEW: Add support for sortable/repeatable checklist fields in the Settings API.
  • TWEAK: Increase CSS enqueue priority to load last.
  • TWEAK: Remove the Enfold theme comapatibility hack as it no longer seems necessary after changing the CSS load priority.
  • TWEAK: Ensure minheight of the search submit button is set to auto to try to override themes which insist on setting a global minheight on submit form fields.
  • TWEAK: Make img src URL protocol relative.
  • TWEAK: Make cn_manage_{taxonomy}_custom_column hook an action instead of filter.
  • TWEAK: Add methods to cnCountry to pull data from the Rinvex\Country library and update existing calls to it to make them compatible to the new country attributs structure.
  • TWEAK: Refactor cnGeo to utilize cnCountries, deprecating many of the region specific methods.
  • TWEAK: Make cnGEO::getRegionName() a public static method matching the est of the members in the class.
  • TWEAK: Do not show labels for hidden text inputs.
  • TWEAK: Add support for the data attribute in cnHTML::input().
  • BUG: Check for page hook properties one ata time as they are added to the filter array ro prevent PHP warning notices from being generated on multisite.
  • BUG: Check to ensure varaiable is array before using in a foreach loop to prevent a PHP warning.
  • BUG: Correct Illegal string offset and Cannot create references to/from string offsets PHP errors when saving user meta.
  • DEV: Include the Rinvex\Country library.

8.6.12 11/01/2017

  • NEW: Introduce support for custom taxonomies.
  • NEW: Introduce the cn_image_editors filter.
  • NEW: Introduce the cn_entry_directory_homepage filter.
  • NEW: Introduce the cn_image_link and cn_image_link-{type} filters.
  • NEW: Introduce the cn_entry_output_category_items filter.
  • TWEAK: Some code cleanup of the output for social media networks icons.
  • TWEAK: Add some RTL CSS in its own CSS file to be conditionally loaded.
  • BUG: When exporting all, make sure to attempt to JSON decode the option column before access its value.
  • BUG: Drop the slug index on the connections_terms table.
  • BUG: Remove debug code from the CSV export all output.
  • BUG: Correct bug which could prevent the logo/photo URL from being exported.
  • OTHER: Add reference to the Local Time extension in the readme.txt file.
  • OTHER: Replace http with https for and domain links.
  • DEV: phpDoc corrections.
  • DEV: Add curly brackets to a variable variable for better code clarity.

8.6.11 09/01/2017

  • BUG: Fix to allow 0 minutes and seconds by improving check for existing key and ensure it is not false after parsing a datetime format before merging value.
  • BUG: If the parsed datetime is in 12 hour format, properly convert the time to 24 hour format.

8.6.10 08/25/2017

  • TWEAK: Rename the getGMTOffset method in cnEntry_vCard to better describe its function.
  • TWEAK: Add Angola and its provinces.
  • TWEAK: Tweak to logic to determine if a canonical redirect should be processed or not.
  • TWEAK: Cache requests to the Google Maps Time Zone API for 24 hours.
  • TWEAK: Add get_utc_offset() and utc_offset() methods to cnTimezone.
  • TWEAK: Add getTimezone() to cnAddress which utilizes cnGoogleMapsTimezone().
  • TWEAK: Update cnRetrieve::setQueryVisibility() to return a query selector of none if the current user does not have the required capabilities to view the object.
  • TWEAK: Update cnRetrieve::upcoming() to respect the visibility status of the date based on the current user’s capabilities.
  • TWEAK: Update the [upcoming_list] shortcode to utilize cnRetrieve::upcoming() instead of custom query in the shortcode callback to standardize results globally across the core plugin.
  • BUG: Correct the return value of cnTimezone::get_raw_offset().
  • BUG: Ensure property exists before using it in cnGoogleMapsTimeZone::queryTimeZone().
  • BUG: Function should be static.
  • DEV: Add a few missing phpDoc blocks.

8.6.9 08/11/2017

  • NEW: Introduce cnGoogleMapsTimeZone wrapper for the Google Timezone API and cnTimezone classes.
  • NEW: Add Pear File_IMC as a vendor library.
  • TWEAK: Tweak the require_once logic in the Card and Profile template to allow them to be pulled out and activated as plugins without causing PHP errors when trying to run the Template Customizer.
  • TWEAK: Rename cnvCard to cnEntry_vCard.
  • TWEAK: Refactor cnEntry_vCard to utilize the File_IMC_Build_Vcard class.
  • TWEAK: Correct the value for the label to properly associate it to the search input.
  • TWEAK: Add a value for the search submit button then use CSS to hide it for a11y.
  • BUG: Ensure the parsed shortcode atts is an array before attempting to add values to the atts array.
  • BUG: Deal with custom field names which contain punctuation and other extended characters.
  • OTHER: Indent with tabs, not spaces.
  • OTHER: Add missing space.
  • OTHER: Update the Chosen library from 1.6.1 to 1.7.

8.6.8 07/28/2017

  • NEW: Auto register custom text and textarea fields with the search the search settings and add logic to the search function to support those fields if enabled in the settings.
  • TWEAK: Remove option to disable the enqueueing of the core CSS styles.
  • TWEAK: Prefix textarea id with cn- to avoid conflicting with other plugin’s admin notices which assign id to “message” so RTE is loaded on the correct HTML node.
  • TWEAK: Use get_locale() instead of WPLANG in the System Info.
  • TWEAK: Set ‘autoload’ to false on option value.
  • TWEAK: Check for core template files before including them.
  • BUG: Include a bugfix to the parseCSV library which corrects unparsing an array with empty “cells”.
  • OTHER: Update “Tested up to:” in readme.
  • OTHER: Add a “Featured Partners” Dashboard widget and add a “Connections” tab to the Install Plugin admin page featuring all the add-ons.
  • OTHER: Reorder default positions of the Dashboard widgets.
  • OTHER: Update the News Dashboard widget.
  • OTHER: Update minified admin CSS.
  • OTHER: Update EDD_SL_Plugin_Updater to 1.6.14.
  • DEV: phpDoc corrections.

8.6.7 07/11/2017

  • NEW: Add Excerpt field.
  • NEW: Introduce the cnHTTP class.
  • NEW: Add support for slider and checkbox Customizer controls for the Template Customizer.
  • NEW: Introduce cnTemplate::getOption().
  • TWEAK: Save options column as JSON instead of serialized array.
  • TWEAK: Allow slashes in template name to permit paths.
  • TWEAK: Make cnTemplatePart::echoOrReturn() public.
  • TWEAK: Add support for exporting the order database column in the “Export All” CSV Export tool.
  • TWEAK: When unknown error occurs after performing a license check, delete the cached response.
  • TWEAK: Utilize cnArray::set() to set current user manage admin page filters array values.
  • TWEAK: Set sslverify to true by default when doing remote requests.
  • TWEAK: Update the “Rate Us” link.
  • TWEAK: Add missing margin bottom to address CSS block.
  • BUG: Fix pagination when performing a keyword search on the Connections :: Manage admin page.
  • BUG: Catch json_decode error while processing a license check.
  • BUG: No need to append the “more string” if the created excerpt is the same as the input string.
  • BUG: Correct the output buffer filters before and after the entry list so the action hooks are properly buffered.
  • BUG: Fix search in the admin s it functions correctly when filtering.
  • BUG: Fix paginating thru search results in the admin.
  • BUG: Correct img tag CSS when editing an entry.
  • COMPATIBILITY: Add support for Presscore theme fancy title.
  • OTHER: Update minified CSS.
  • I18N: Update POT file.
  • I18N: Update MO files.
  • DEV: Remove HHVM from Travis test matrix since WP is doing the same.
  • DEV: phpDoc corrections.
  • DEV: .editorconfig tweaks.
  • DEV: Update the Gruntfile.js autoprefixer task. Update to match current core WP supported browsers.
  • DEV: Run CSS thru autoprefixer.

8.6.6 05/23/2017

  • NEW: Introduce the cn_csv_batch_export_download_headers action hook.
  • NEW: Introduce the cn_template_register_options-{template-slug} filter.
  • NEW: Introduce cnImage::download().
  • TWEAK: Tweak cnEntry_Address:query() to call cnRetrieve::addresses() to query as it it were saving so all addresses would be returned per the supplied args and not limited to the current user permissions.
  • TWEAK: Tweak cnEntry::getAddresses() to query addresses the user can view when not saving.
  • TWEAK: Add the screen reader text to the directory pagination to help improve a11y.
  • TWEAK: Start searching for unique slug at 0 instead of two to better make sure slugs are properly incremented.
  • BUG: Reset applied filters when when addresses to ensure all addresses are saved to the database.
  • BUG: Fix bug in cnFilesystem::uniqueFilename() introduce in WP 4.6 when WP change the filename being passed to the callback from the basename to the full name.
  • BUG: When getting a unique entry slug, the value should be saved in the cnEntry property so a unique entry slug is not queried on subsequent calls.
  • DEV: phpDoc correction.
  • DEV: Rename method property name in cnImage::sideload() to be consistent with other similar methods.
  • DEV: phpDoc correction.

8.6.5 05/04/2017

  • NEW: Export the link title attribute when exporting a CSV file.
  • NEW: Introduce the cn_entry_slug filter.
  • NEW: ADD support for per user setting of the category metabox height.
  • TWEAK: Minor tweak to template search paths.
  • TWEAK: Use the entry_type db column instead of the legacy entry_type key from the options array.
  • BUG: Correct escaping and the links title attribute.
  • BUG: Correct escaping of name when creating the entry slug.
  • BUG: Correct the value cn_meta_field_value-{$field['id']} dynamic filter.
  • DEV: phpDoc corrections.
  • DEV: Remove WP 4.4 from Travis testing matrix.
  • DEV: Add a couple JS triggers to the admin JS that can be hooked into to trigger events.

8.6.4 04/07/2017

  • NEW: Introduce cnFormatting::dateFormatPHPTojQueryUI().
  • NEW: Introduce cnFunction::var_dump_error_log().
  • NEW: Introduce cnDate::parseFromFormat() and cnDate::createFromFormat() to provide PHP 5.2 compatible functions for date_parse_from_format() and DateTime::createFromFormat() respectively.
  • TWEAK: Tweak escaping of search terms.
  • DEV: Add @todo in cnMetabox_Render::datepickerJS() to use cnFormatting::dateFormatPHPTojQueryUI() instead to convert the PHP datetime format to a compatible jQueryUI Datepicker compatibly format.

8.6.3 04/04/2017

  • TWEAK: Remove PHP_EOL in hcard address template to eliminate unwanted whitespace in page when being rendered.
  • BUG: Reset address filters in cnOutput::getAddressBlock().
  • OTHER: Correct misspelling.

8.6.2 03/31/2017

  • TWEAK: Use forward slashes for jQuery UI datepicker date format so when the date is parsed with PHP it will be parsed as a US date.
  • BUG: Reset the cnEntry_Adresses object filters in cnEntry::getAddresses() to allow sub sequent call to the method to return the correct results.

8.6.1 03/28/2017

  • BUG: If formatted number string is empty when converted to a float, return null so empty check will not fail causing error.
  • BUG: Correct Fatal error: Uncaught Error: Using $this when not in object context in the address-hard.php template fragment.

8.6 03/24/2017

  • NEW: Introduce wp_doing_ajax() which was introduced in WordPress 4.7 so it is accessible in older version of WordPress.
  • NEW: Introduce cnTerm::count().
  • NEW: Introduce cnArray.
  • NEW: Introduce cnToArray and cnCollection.
  • NEW: Introduce cnAddress, cnCountry and cnCoordinates.
  • NEW: Introduce cnEntry_Addresses.
  • NEW: Introduce cnUser::canView() and cnUser::canNotView().
  • NEW: Introduce the cn_entry_permalink filter.
  • TWEAK: Do not register shortcodes during admin ajax requests.
  • TWEAK: Add newForwardGeroCoder=false as parameter when initiating the Google maps geocoder in jQuery.goMap().
  • TWEAK: Reset the list_type query option when filtering the list by entry slug.
  • TWEAK: Add support for child_of attribute in cnEntry::getCategories() and cnOutput::getCategoryBlock().
  • TWEAK: Add spans to the category breadcrumb with classes and ids so they can be targeted with CSS.
  • TWEAK: Ensure the use can only see relationships based on relations status and visibility.
  • TWEAK: Refactor the plugin to use an autoloader to load classes via a hash table.
  • TWEAK: Remove unnecessary break statements.
  • TWEAK: Register all dependencies of cnEntry_Addresses with the autoloader.
  • TWEAK: Deprecate cnValidate::userPermitted().
  • TWEAK: Refactor cnEntry::getAddresses() and cnEntry::setAddresses() to utilize cnEntry_Addresses.
  • TWEAK: Refactor cnRetrieve::addresses to query by the address visibility status.
  • TWEAK: Refactor cnRetrieve::addresses() to return a multidimensional array instead of an array of objects the the return value can be utilized with cnEntry_Addresses.
  • TWEAK: Fix the filters so the entry addresses are geocoded when added to cnEntry_Addresses.
  • TWEAK: Add the core templates folder to the template search path so it will be search when loading template fragments.
  • TWEAK: No need to utilize sanitize_file_name() when searching for template fragment file names.
  • TWEAK: No need to save the address object cache to the core entry table on initial update. This is handled by cnEntry::updateObjectCaches() after the entry is updated so the address ID are properly cached.
  • TWEAK: Annotate cnEntry::update() $wpdb format values for easy identification.
  • TWEAK: No need to save the address object cache to the core entry table on initial save. This is handled by cnEntry::updateObjectCaches() after the entry is saved so the address ID are properly cached.
  • TWEAK: Annotate cnEntry::save() $wpdb format values for easy identification.
  • TWEAK: Add trailing commas after last array item for consistency in code formatting.
  • TWEAK: Update cnEntry::save() and cnEntry::update() to use cnEntry_Addresses::save().
  • TWEAK: Do not serialize cnEntry_Addresses object for saving into the object cache, save the array values.
  • TWEAK: Refactor manage.php and cnOutput::getAddressBlock() to utilize cnEntry_Addresses::render() with template fragments.
  • TWEAK: Remove stray commented out code.
  • TWEAK: Add the wpseo_title filter to cnSEO so the page meta title is properly updated when Yoast SEO is installed.
  • BUG: Ensure logged in user can view public entry and public entry data if the directory does not require login to view and the user does not necessarily have the view public capability which can happen in WP multisite installations.
  • BUG: Sanitize the textarea metabox field type.
  • BUG: Do not use esc_textarea() for escaping the metabox textarea for editing as it causes characters to become entities.
  • REST API: Update terms endpoint phpDoc.
  • REST API: Rename “resources” in the terms endpoint to be referenced as “terms”.
  • REST API: Standardize error response messages in the term endpoint.
  • OTHER: Correct misspellings.
  • I18N: Update POT file.
  • DEV: Exclude the /tests/* path from grunt tasks.
  • DEV: phpDoc block corrections.

8.5.32 12/12/2016

  • TWEAK: Show parent theme name and version in System Info when child theme is active.
  • TWEAK: Query all matching entry slugs at once instead one at a time when searching for a unique slug.
  • BUG: Remove use of is_taxonomy_hierarchical() within the cmTerm class because it does not apply.
  • BUG: Fix “Illegal string offset” in PHP 7.1.
  • OTHER: Remove stray/extra whitespace after a comma.
  • OTHER: Introduce cnDB::multisert().
  • OTHER: Update so the badges link to the site.
  • PHPUnit: Add PHP 7.1 to the test matrix.

8.5.31 12/08/2016

  • TWEAK: Fix Template Customizer so it loads properly in WordPress 4.7.
  • REST API: More work done to support the entry endpoint for the REST API.
  • PHPUnit: Add framework to support unit testing to help ensure even more stable build releases.

8.5.30 11/29/2016

  • TWEAK: Revert form action to not include the form action.
  • BUG: Ensure enhanced select renders the placeholder values correctly when viewing on a mobile device.
  • BUG: Enable search for the Address Line 4, District and Country fields.
  • OTHER: Correct method capitalization.
  • DEV: Correct inline code doc punctuation.
  • I18N: Update POT file.
  • I18N: Update MO files.

8.5.29 11/10/2016

  • NEW: Add filter to the document_title_parts filter to properly set the browser tab/window title if wp_title() is not being used by the theme.
  • TWEAK: Remove the $cached terms params in the Term REST endpoint.
  • TWEAK: Suppress potential PHP notice from being thrown by unserialize() in cnEntry::getAddresses().
  • TWEAK: Ensure the home page URL always has a trailing slash in the callback function for the page_link filter.
  • TWEAK: Add readonly support to cnHML::select() by making the actualy select field disabled and adding a new hidden input with the same name and value.
  • TWEAK: Only add the search form action attribute if the directory permalink is being added.
  • TWEAK: Force date format in datepicker because, since WP 4.4, WP sets a default format based on the date format set on the General Settings admin page. Those formats are not compatible with the expected date format to be saved.
  • TWEAK: Remove unnecessary trailing semi-colon from datepicker init function call.
  • TWEAK: Remove usage of deprecated $connections global var from cnEntry::getDates().
  • TWEAK: Set the form action attribute to default to the home_id shortcode default so searches are always from the directory root page.
  • TWEAK: Add a saving bool parameter to the cnRetrieve class for addresses, phone numbers and such to allow addresses and such to be queried regardless of current logged user permissions.
  • TWEAK: Update the entries address, phone, etc.. object caches on updates. This is to ensure the ID of each address, phone, etc.. is updated to reflect the ID in the database vs. leaving it as 0.
  • TWEAK: Convert the WP default date format WP jQuery UI datepicker compatible format.
  • BUG: Update the [upcoming_list] shortcode so it will function correctly with templates which support the Template Customizer.
  • BUG: Fix the display of the changelog of add-ons.
  • DEV: phpDoc Block corrections.
  • I18N: Update POT file.
  • I18N: Update MO files.

8.5.28 10/12/2016

  • NEW: Introduce the connections_page_connections_settings-{tab_name} action hook.
  • NEW: Introduce the cn_pre_handle_404_retrieve_atts filter hook.
  • NEW: Introduce cnLicense_Status.
  • TWEAK: Improve the page load time of the Plugins admin page by batching together license checks into a single HTTP request.
  • TWEAK: Set option group name one instead of repeating the logic several times in cnSettingsAPI::form().
  • TWEAK: Add support for the invalid_item_id error status reported by EDD-SL.
  • TWEAK: Register all item licenses with cnLicense_Status.
  • TWEAK: Remove unused cnLicense::status() method.
  • TWEAK: Remove use of transients made obsolete by cnLicense_Status.
  • BUG: Reset the category_exclude shortcode option if querying entry by slug.
  • BUG: The connections_license_data should not be autoloaded.
  • BUG: The basename and slug array values do not need to be set as defaults because they are auto created from file path and item name.
  • DEV: phpDoc block fixes.

8.5.27 10/08/2016

  • NEW: Introduce the cn_search_like_shortword filter.
  • NEW: Introduce cnPlugin_Updater class.
  • TWEAK: Switch from using EDD_SL_Plugin_Updater to cnPlugin_Updater..
  • TWEAK: Update WordPress API to 2.0-beta15
  • TWEAK: Tweak the term slug sanitize_callback to use the WP_REST_Controller::sanitize_slug() callback.
  • TWEAK: Remove unnecessary break statements in a switch.
  • TWEAK: Ensure trailing slash in cnLicense::license() request.
  • BUG: Ensure changelog section existing before trying to parse it.
  • BUG: The upgrade notice is a string, not an array.
  • OTHER: Correct misspelling.
  • OTHER: Update copyright year in cnLicense.
  • DEV: phpDoc fixes.

8.5.26 09/16/2016

  • NEW: Add a new CSV export config option to export categories as child_of the defined parent category into their own csv column.
  • NEW: Add support for the WP REST API. This is alpha status and only supports the directory categories.
  • TWEAK: Add the cn-left and cn-right class to the Default Entry Card template for easier selection.
  • TWEAK: Add status codes to return value of cnLicense::statusMessage().
  • TWEAK: Register settings license field once per item instead of once for all items so cnLicense::field() will be unique per item instead of last item activated.
  • TWEAK: Optimize cnLicense::field() by removing duplicate code by utilizing cnLicense::statusMessage().
  • TWEAK: Delete license transient on activate/delete.
  • TWEAK: Update admin CSS with updates styles for the Settings admin page, Licenses tab.
  • TWEAK: Refactor cnSettingsAPI::form(), basic code cleanup.
  • TWEAK: Trigger 404 if entry not found instead of displaying a “no results” message.
  • TWEAK: Add try/catch to cnOutput::getDateBlock() to prevent fatal PHP errors when init’ing DateTime() with an invalid date format.
  • TWEAK: Reset the min/max-width CSS values on the search input on the frontend to fix some of the odd global defaults that themes set.
  • BUG: Remove include wp-load.php in WordFence Falcon Cache compatibility callback which caused fatal PHP errors.
  • BUG: Remove px unit from the social media network icon img tags as that is not valid markup.
  • BUG: Change cn-category-%d from an id to a class because it can be output on the page more than once.
  • BUG: Add missing $orderBy var to cn_term_clauses filter.
  • BUG: Fix a couple undefined variable PHP notices being generated by cnvCard.
  • BUG: Remove unnecessary ob_clean() call in cnvCard.
  • OTHER: Correct misspellings.
  • DEV: phpDoc fixes.
  • DEV: Stub some phpDoc in cnvCard.
  • DEV: Clean up some code alignment issues in cnvCard.
  • DEV: Add the WP REST API to the vendors folder.

8.5.25 09/07/2016

  • BUG: Do not try to get term ancestor hierarchy if the term is a root parent.
  • COMPATIBILITY: Convert NOWDOC block to HEREDOC block for PHP5.2.x holdouts.
  • COMPATIBILITY: Add action which should flush the Wordfence Falcon Cache when an entry/term is added/updated/deleted.
  • TWEAK: Pass WP_Error codes results from wp_remote_get() during license status check so they can be displayed.

Complete Changelog can be found here.