Connections Business Directory


Showcase | Documentation | Support | Templates | Extensions

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…


  • Compatible with all themes including popular themes such as Avada, Divi, Enfold and OceanWP.
  • Compatible with most popular page builders such as Elementor, Beaver Builder, Brizy, Visual Composer, Fusion, SiteOrigin, etc…
  • Supports the WordPress Block (Gutenberg) Editor with the following blocks.
    • Carousel Block :: Display your directory as a carousel.
    • Directory Block :: Use this block to embed your directory in a page.
    • Team Block :: It’s easy to use Connections to build your team page! Team Block is a full-featured block with multiple layout styles. While premium team plugins can set you back $20 or more, Team Block is free for all Connections users.
    • Upcoming List Block :: Use this block to display an upcoming list of anniversaries, birthdays or other events.
  • Highly rated support.
  • Continuously updated bringing you new features for free.
  • A growing selection of Content Blocks:
    • Related Entries:: Display related Entries in a mobile responsive carousel.
    • Nearby Entries:: Increase discoverability of Entries by displaying nearby Entries in a mobile responsive carousel.
    • Recently Viewed:: A list a directory Entries the user has recently viewed.
    • Last Viewed:: The last directory Entry the user viewed.
    • Frontend Entry Management:: Management options include a quick link to edit the Entry and a Delete option.
    • Entry Meta:: Display details such as when the Entry was added nad last modified and by whom.
  • 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 through 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: >= 2.3
  • PHP version: >= 5.6.20 ( 7.1 is highly recommended)


May 30, 2023
I have been using the Connections Pro plugin for quite a while now for more than one customer. The plugin offers a unique and simply approach to directory listings which is excellent value. The customer support is great and all questions are answered within a good amount of time, sometimes custom code is offered too! I highly recommend this if you are looking for a directory on your website.
April 3, 2023
We have been using Connections for a long time now in our internal site; first to only show upcoming employee birthdays and anniversaries (which is a feature not easy to find), but more recently we started using it as our employee directory as well. In the backend, it has great customization options for setting up your entry form, and the entry manager makes finding/editing employees easy. And any time I've needed help with the plugin, Support is quick to respond, nice, and super helpful. (Thank you Steven!!) This is a great plugin!
March 9, 2023
My publication tried out 7 or 8 different plug-ins on our Dev site before settling on Connections Pro, and we’re 100 percent certain we made the right choice. The plug-in was easy for our core people to learn, and very responsive to our tweaks and customizations. It also has been easy to train our ancillary team members on their directory-specific tasks. The online documentation is very helpful, and the tech support has been insanely good.We're a small company with limited resources. Connections Pro has enabled us to add capacity without busting our (tight) budgets. Perfect solution for us.
March 9, 2023
I'm impressed with the integration of features that this solution provides. The capabilities go well beyond just a directory. As an example, there are multiple ways to protect the privacy of email addresses. I'm using the Contact extension which provides a form to email any member in the directory. I also like the Form extension which enables people to apply to be listed in the directory. These membership applications can then send submission notifications for approval by a site administrator. There is a learning curve to using the Connections plugin, but I have found the Support to be responsive within 24 hours and often multiple times in the same day. It's helpful to know CSS or to use a text-replacement plugin to fine-tune the user interface. I bought the Extension Pro Pack and feel it was money well-spent. I'm also using a beta version of software which provides improved search and filtering across multiple categories. The author considered one of my suggestions and indicated that it will be included in future.
February 18, 2023
This plugin is a real nickel-n-dimer. To get useful basic functions that should be included for free, you have to pay a ton of money for templates and addons. I recommend a pass on this one.
Read all 422 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.

10.4.43 05/24/2023

  • NEW: Introduce CN_REST_Entry_Controller::_sanitize() and CN_REST_Entry_Controller::_validate().
  • NEW: Introduce the Connections_Directory/API/REST/Controller/Entry/Get_Items/Arguments filter.
  • TWEAK: Remove unnecessary local variables.
  • TWEAK: Make cnEntry_Action::copyImages() public.
  • TWEAK: Assign local variable to object property and then return.
  • TWEAK: Tweak string concatenation.
  • TWEAK: Minor optimization to check for the existing entry slugs within similar slugs before creating an indexed iteration of the slug.
  • TWEAK: If the supplied entry slug is the same as th existing entry slug, do not attempt to a unique slug.
  • TWEAK: Remove unnecessary parentheses.
  • TWEAK: Replace deprecated cnArray::get() with _array::get().
  • TWEAK: Type cast is redundant.
  • TWEAK: Remove use of deprecated cnOutput object. Replaced with cnEntry_HTML.
  • TWEAK: Move REST controllers classes to the autoloader.
  • TWEAK: Move the REST register routes hook into Connections_Directory::hooks().
  • TWEAK: Rename cnAPI to \API\REST\Routes.
  • TWEAK: Cache the result of CN_REST_Entry_Controller::get_item_schema().
  • TWEAK: Replace deprecated cnFormatting::toBoolean() with _format::toBoolean().
  • TWEAK: The value returned from cnEntry::getStatus() does not require sanitization each time it is called.
  • TWEAK: Improve validation in cnEntry::setStatus().
  • TWEAK: Minor optimization in cnEntry_Action::process(). Call $entry->getStatus() only once instead of multiple times.
  • TWEAK: Refactor cnEntry_Action::copyImages() to support whether to copy the image variations.
  • TWEAK: First pass at implementing update entry item via a REST API request.
  • TWEAK: Rename class CN_REST_Entry_Controller to Connections_Directory\API\REST\Endpoint\Entry.
  • TWEAK: Rename file to Entry.php.
  • BUG: Ensure the directory homepage base URL is set when returning the REST API request results.
  • OTHER: Correct misspellings.
  • DEV: phpDoc corrections.
  • DEV: phpDoc updates.
  • DEV: Remove unused commented out code.
  • DEV: When a multi-item array uses associative keys, each value should start on a new line.
  • DEV: Add method and return types.
  • DEV: Correct code formatting.
  • DEV: Fix phpDoc alignment.

10.4.42 05/08/2023

  • NEW: Introduce Shortcode\Get_HTML.
  • TWEAK: Move cnShortcode_Connections to the deprecated folder.
  • TWEAK: The replacement property should be optional in _deprecated::_file().
  • TWEAK: No need to register the [cn-directory] shortcode with WP since it is only used in the view controller.
  • TWEAK: Add the private tag property to Entry_Directory and pass it to the filters.
  • TWEAK: Utilize \Shortcode\Entry_Directory instead of the deprecated cnShortcode_Connections::shortcode() method when rendering the directory.
  • TWEAK: Refactor deprecated cnShortcode_Connections::shortcode() to call its replacement Shortcode\Entry_Directory.
  • TWEAK: Utilize Shortcode\Get_HTML in all shortcode objects to reduce code duplication.
  • TWEAK: Remove usage of deprecated cnShortcode::clearFilterRegistry().
  • DEV: Add file header.
  • DEV: Optimize imports.
  • DEV: Add method return type.
  • DEV: phpDoc corrections.

10.4.41 05/02/2023

  • NEW: Introduce the \Shortcode\Entry_Directory shortcode; the eventual replacement code for cnShortcode_Connections::shortcode().
  • NEW: Introduce \Shortcode\Directory_View and use it as teh callback for the [connections] shortcode.
  • TWEAK: Remove the experimental [cn_thumb] and [cn_thumbr] shortcodes from the plugin, moving them to a separate plugin.
  • TWEAK: Remove experimental [cn-mapblock] shortcode.
  • TWEAK: Remove cnShortcode::register() and register shortcodes in Connections_Directory::hooks() on the init hook to consistent with current coding standards.
  • TWEAK: Change folder capitalization from includes/shortcode to includes/Shortcode to match current naming conventions.
  • TWEAK: Remove use of deprecated methods in cnTemplate_Customizer::controlStrings().
  • TWEAK: Change Entry::prepareAttributes() from public to private.
  • TWEAK: Replace deprecated cnShortcode_Connections::shortcode() in cnDashboardMetabox::recent().
  • BUG: Ensure cnScript::maybeEnqueueStyle() returns true when the [cn-entry] shortcode is used.
  • BUG: Pass the correct attributes in cnTemplatePart::loadTemplateError() when initiating Upcoming_List.
  • BUG: The connectionsEntryList() method (template tag) should call cnShortcode_Connections::view() not cnShortcode_Connections::shortcode().
  • OTHER: Correct misspellings.
  • DEV: phpDoc corrections.
  • DEV: Correct inline comment.
  • DEV: Remove commented out debug code.
  • DEV: phpDoc updates.
  • DEV: Deprecate cnShortcode_Connections::shortcode().

10.4.40 04/24/2023

  • NEW: Introduce Entry\Functions::getPhone() and Entry\Functions::getEmail().
  • NEW: Add a copy to the clipboard button to the system info admin screen.
  • NEW: Introduce the cn_entry_output_category_items_class filter.
  • NEW: Introduce the Do_Shortcode trait.
  • NEW: Introduce _fragment::exists().
  • NEW: Introduce _fragment::__toString().
  • NEW: Introduce \Shortcode\Upcoming_List.
  • NEW: Introduce \Template\Hook_Transient.
  • TWEAK: Remove instance of deprecated cnFormObjects::open().
  • TWEAK: Update the community-supplied Members template to function without errors or warnings before moving it to a separate add-on.
  • TWEAK: Remove the legacy community Members template.
  • TWEAK: Add trailingslashit() to cnTemplate::getPath() and cnTemplate::getURL().
  • TWEAK: Update the accessed directly validation to be consistent with current coding standards.
  • TWEAK: Remove the use of deprecated cnHTTP::verifySSL().
  • TWEAK: Trim system info text to remove leading/trailing whitespace.
  • TWEAK: Add term slug to item class names.
  • TWEAK: Update \rinvex\country library to version 9.0.
  • TWEAK: Remove use of deprecated cnHTML::attribute() function in cnTemplatePart::returnToTop().
  • TWEAK: Add parameter type declaration to cnTemplatePart::returnToTop().
  • TWEAK: Move the class.geo.php file to the /includes/geo/ folder.
  • TWEAK: Remove the deprecated cnGeo::AO_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::BG_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::CA_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::AU_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::BD_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::BR_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::GB_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::ES_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::HK_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::HU_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::CN_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::NZ_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::ID_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::IN_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::IR_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::IT_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::JP_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::MX_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::MY_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::NP_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::PE_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::ZA_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::TH_Regions() method.
  • TWEAK: Remove the deprecated cnGeo::TR_Regions() method.
  • TWEAK: Add return type declaration.
  • TWEAK: Remove the abandoned and experimental qTip shortcodes and templates.
  • TWEAK: Call cnShortcode_Connections::shortcode() instead of the template tag connectionsEntryList() when rendering the recently added/edited dashboard widgets.
  • TWEAK: Utilize \Shortcode\Upcoming_List in the “upcoming” admin dashboard widgets and the Upcoming Editor Block.
  • TWEAK: Replace the [upcoming_list] shortcode callback with \Shortcode\Upcoming_List.
  • TWEAK: Move the connectionsEntryList() and connectionsUpcomingList() template tags to the global functions.php file.
  • TWEAK: Remove the inc.shortcodes.php file as the template tags and the [upcoming_list] shortcode callback are no longer utilized, and the file no longer contains any code.
  • TWEAK: The \Shortcode\Entry class does not need to extend the cnShortcode class.
  • TWEAK: First pass at restructuring \Shortcode\Entry to match current coding standards.
  • TWEAK: Second pass at restructuring \Shortcode\Entry to match current coding standards.
  • TWEAK: Remove use of deprecated cnHTML::attribute() methods on Template’s admin page.
  • TWEAK: Remove use of deprecated method cnHTML::attribute() in cnTemplatePart::updated().
  • TWEAK: Add class properties to remove “Creation of dynamic property” PHP deprecation notices.
  • TWEAK: Extend cnTemplatePart with stdClass to remove “Creation of dynamic property” deprecation notices.
  • TWEAK: Remove deprecated dynamic action hook cn_action_card-{$template->slug}.
  • TWEAK: Do not set dynamic object property to prevent a PHP deprecation notice.
  • TWEAK: Move a set of actions from Upcoming_List::generateHTML() to Upcoming_List::loadTemplate().
  • TWEAK: Minor tweak to coding style when applying filters in \Shortcode\Upcoming_List.
  • TWEAK: No need to initiate a new variable to hold the instance of Connections_Directory in cnTemplateFactory::loadTemplate().
  • TWEAK: Remove unused commented-out code.
  • TWEAK: The \Shortcode\Conditional_Content class does not need to extend the cnShortcode class.
  • TWEAK: The \Shortcode\cnThumb class does not need to extend the cnShortcode class.
  • TWEAK: The \Shortcode\cnThumb_Responsive class does not need to extend the cnShortcode class.
  • TWEAK: The \Shortcode\cnShortcode_Connections class does not need to extend the cnShortcode class.
  • TWEAK: Remove unnecessary local variable in cnShortcode::removePBR().
  • TWEAK: Deprecate cnShortcode::view() and move to cnShortcode_Connections::view().
  • TWEAK: Update \Blocks\Directory::render() to utilize cnShortcode_Connections::view() instead of the deprecated cnShortcode::view() method.
  • TWEAK: Deprecate both cnShortcode::addFilterRegistry() and cnShortcode::clearFilterRegistry(). Replaced with \Template\Hook_Transient.
  • TWEAK: First pass at integrating the advanced search into the base plugin.
  • BUG: Increment and decrement operators must be bracketed when used in string concatenation.
  • BUG: Fix the wp_remote_post() check in the system info.
  • BUG: Add noop callback to Google Maps API parameters.
  • BUG: Use the correct Spanish translation for Spain. It seems the Catalan translation was used.
  • BUG: Correct bug in _fragment::clear() where, in some cases, the fragment cache would not be cleared.
  • BUG: Do not remove the cn_list_atts_permitted-{$templateSlug} cn_list_atts-{$templateSlug} filters in the [upcoming_list] shortcode.
  • BUG: Correct bug in pre_do_shortcode_tag filter callbackDo_Shortcode::maybeDoShortcode() that caused filter to return incorrectly.
  • OTHER: Correct misspellings.
  • DEV: phpDoc corrections.
  • DEV: phpDoc updates.
  • DEV: Inline comments must end in full-stops, exclamation marks, or question marks.
  • DEV: Correct minor phpcs whitespace issues.
  • DEV: The CASE body must start on the line following the statement.
  • DEV: Disable Class name must begin with a capital letter, and the Class name is not valid phpcs issues.
  • DEV: Each array item in a multi-line array declaration must end in a comma.
  • DEV: Parameter comment must end with a full stop.
  • DEV: Visibility must be declared on the method.
  • DEV: There must be exactly one blank line after the file comment.
  • DEV: No space found before comment text.
  • DEV: Remove unused commented-out code.
  • DEV: Correct code tab indentation.
  • DEV: Bump tested to version 6.2.
  • DEV: Add @todo in code.
  • DEV: Add phpDoc to class properties.
  • DEV: Add an inline comment regarding hyphens in shortcode tag names.
  • DEV: Add @todo to make a note to move where two actions are initiated.
  • DEV: Add file header.
  • DEV: Add cnShortcode class phpDoc.
  • DEV: Remove unnecessary line returns.

10.4.39 03/06/2023

  • NEW: Introduce the Search and Submit fields to the Fields API.
  • NEW: Introduce polyfill for ctype_digit().
  • NEW: Introduce Request::isSearch().
  • NEW: Introduce Request::hasQuery().
  • NEW: Introduce the “Tests” Tools tab and a tool to test wp_remote_(get|post)() requests.
  • TWEAK: Deprecate the cn_loaded action hook in favor of the Connections_Directory/Loaded action hook triggered on the plugins_loaded action hook to have it run reliably, as it is possible for add-ons to be loaded by WP before Connections is loaded.
  • TWEAK: Add additional core WordPress constants to the System Info tool.
  • TWEAK: Rename a variable to make it more clear as to the intended function of its value.
  • TWEAK: Cleanup code cnTemplatePart::formOpen().
  • TWEAK: Add deprecated filter for cn_form_open_action.
  • TWEAK: Remove deprecated cnTemplatePart::characterIndex() method.
  • TWEAK: Refactor Conditional_Content::isSearch() to utilize Request::isSearch() to remove code duplication.
  • TWEAK: Only add the leading space to the label element if it has attributes.
  • TWEAK: Add support for implicit label position for a form field.
  • TWEAK: Set the various image quality arguments to default to null from 82 so the code WP Image Editor default image quality will be used.
  • TWEAK: Include the Partial folder when locating template partials.
  • TWEAK: Allow upper and lowercase file names.
  • BUG: The character index and section heading should not be displayed when performing a keyword query request.
  • BUG: Ensure image width is a whole number When processing.
  • BUG: The $params argument should be extracted when loading template parts.
  • OTHER: Correct misspellings.
  • DEV: Inline comments must end in full-stops, exclamation marks, or question marks.
  • DEV: phpDoc corrections.
  • DEV: phpDoc updates.
  • DEV: Removed unused commented out code.

10.4.38 02/02/2023

  • TWEAK: Pass $entry object in the cn_list_row_class filter.
  • TWEAK: Rename cn_submit_search_form action to Connections_Directory/Shortcode/View/Search.

10.4.37 01/20/2023

  • NOTICE: Minimum required PHP version is 7.0.
  • SECURITY: Add missing argument sanitization and escaping when outputting THE [connections] shortcode content.
  • SECURITY: Add escaping to the [upcoming_list] shortcode output.
  • TWEAK: Remove duplicate code from the [upcoming_list] shortcode to remove end of line characters.
  • DEV: Update copyright year in file header.

10.4.36 01/10/2023

  • NOTICE: Bump min PHP version to 7.0.
  • TWEAK: Update the dashboard news feed to URL to https.
  • TWEAK: Simplify return value logic.
  • TWEAK: Bump minimum support version of Yoast SEO to 15.2. Remove use of deprecated method WPSEO_Utils::get_title_separator().
  • TWEAK: Add function exists check for Yoast SEO before checking if the get_title_separator() method exists.
  • BUG: Correct the classname check.
  • BUG: Ensure the correct update_term_cache() function is called to prevent cache pollution.
  • OTHER: Correct misspellings.
  • DEV: Move polyfill functions to separate files and include them as dependencies.
  • DEV: phpDoc corrections.

10.4.35 12/15/2022

  • NEW: Introduce _validate::isStringNotEmpty().
  • NEW: Introduce cnAddress::setType() and cnAddress::getName().
  • NEW: Introduce _sanitize::integer().
  • NEW: Introduce the Connections_Directory/Admin/Page/Tools/Tab/Import action.
  • TWEAK: Ensure strings are passed to str_pad() and strlen() to prevent deprecation notifications in PHP >= 8.1.
  • TWEAK: Set the default value of Field\Rich_Text and Field\Textarea to empty strings instead of null.
  • TWEAK: Return empty string and not null if country name is not set.
  • TWEAK: Remove unnecessary usages of cnSanitize::field() "raw" incnEntry_Collection_Item`.
  • TWEAK: Add validation and formatting to several methods in cnEntry_Collection_Item.
  • TWEAK: Add validation to setting methods in cnAddress before setting object properties.
  • TWEAK: Add validation to cnEntry_Collection_Item::setVisibility() to ensure only valid types can be set.
  • TWEAK: Refactor cnAddress::__construct() to use object setters.
  • TWEAK: Remove the unused cnAddress::getTypes() method.
  • TWEAK: Utilize _sanitize::integer() instead of cnSanitize::integer() in cnSanitize::string().
  • TWEAK: Refactoring of cnEntry::getOrder() and cnEntry::setOrder() to default to 0 and utilize _sanitize::integer().
  • TWEAK: Refactor cnMetabox_Process::sanitize() to remove use of deprecated cnSanitize::string().
  • TWEAK: Refactor cnSanitize::field() to remove use of deprecated cnSanitize::string().
  • TWEAK: Remove unused deprecated cnSanitize::integer() method.
  • TWEAK: Refactor _validate::isInteger() and _validate::isPositiveInteger() to ensure the correct result across additional inputs.
  • TWEAK: Remove usages of cnSanitize::field() with the raw context.
  • TWEAK: Move the rendering of the postbox to bulk import categories to the new Connections_Directory/Admin/Page/Tools/Tab/Import action hook.
  • DEV: Remove unused commented out line of code.
  • DEV: Inline comments must end in full-stops, exclamation marks, or question marks.
  • DEV: phpDoc corrections.
  • DEV: Deprecated cnSanitize::string().

10.4.34 12/02/2022

  • NEW: Introduce _format::secondsToHuman().
  • TWEAK: Update deprecation message for the number input field type.
  • TWEAK: Move CSV Batch Import classes to the autoloader.
  • TWEAK: Move CSV Batch Export classes to the autoloader.
  • BUG: Add additional checks to help ensure the PHP warning “array_push() expects parameter 1 to be array” is not triggered with the Yoast SEO integration.
  • OTHER: Bump tested to.
  • I18N: Update POT file.
  • I18N: Update MO files.
  • DEV: phpDoc corrections.
  • DEV: Inline comments must end in full-stops, exclamation marks, or question marks.
  • DEV: Update package-lock.json.
  • DEV: Add make-pot npm script.
  • DEV: Update Transifex config.
  • DEV: Add npm script to make POT and push/pull PO/POT files from Transifex.
  • DEV: Update dist files.

10.4.33 11/10/2022

  • NEW: Introduce a polyfill for json_validate() added to PHP 8.3.
  • NEW: Introduce _validate::isFileJSON() and _validate::isJSON().
  • NEW: Introduce \Request\List_Table_Logs.
  • NEW: Introduce \Hook\Action\Admin\Log_Management.
  • TWEAK: Remove use of deprecated cnFunction::decodeJSON() method.
  • TWEAK: Refactor the system info actions to utilize \Hook\Action\Ajax\Response and \Hook\Action\Ajax\Settings_Export_Import.
  • TWEAK: Refactor and \Hook\Action\Ajax\Settings_Export_Import and \Hook\Action\Ajax\Category_Metabox_Height to utilize \Hook\Action\Ajax\Response to reduce code duplication.
  • TWEAK: Remove unused import.
  • TWEAK: Refactor to utilize \Hook\Action\Admin\Log_Management.
  • TWEAK: Rename \Request\Int_Array to \Request\Integer_Array. Extend \Request\Integer_Arrayto create “\Request\ID_Arrayand refactor instances of\Request\Integer_Arrayto utilize\Request\ID_Array`.
  • BUG: The search term for logs is a get request, not a post.
  • BUG: Only include the log type in the delete action URL if not empty.
  • BUG: Add nonce to the Tools Logs admin page.
  • DEV: phpDoc updates.
  • DEV: Adjust inline comment.

10.4.32 11/02/2022

  • NEW: Introduce \Request\Integer.
  • NEW: Introduce \Hook\Action\Ajax\Category_Metabox_Height.
  • NEW: Introduce the Connections_Directory/Entry/Unique_Slug filter.
  • NEW: Introduce \Input::hasFailedSchemaSanitization() and \Input::hasFailedSchemaValidation().
  • NEW: Introduce \Hook\Action\Ajax\System_Information.
  • TWEAK: Update success message when the category metabox height is successfully changed to include the height.
  • TWEAK: Refactor \Request\ID to extend \Request\Integer.
  • TWEAK: Refactor cnAdminActions::setUserCategoryDivHeight() to utilize \Request\ID.
  • TWEAK: Refactor category metabox height to utilize \Hook\Action\Ajax\Category_Metabox_Height.
  • TWEAK: Remove deprecated and commented out wp_current_category shortcode option.
  • TWEAK: Remove use of deprecated cnFormatting class.
  • TWEAK: Remove use of deprecated cnString class.
  • TWEAK: Refactor the system info actions to utilize \Hook\Action\Ajax\System_Information.
  • TWEAK: Minor db schema change to improve unique slug lookup.
  • OTHER: Correct misspellings.
  • DEV: Correct namespace of filter hook callbacks.
  • DEV: Remove commented out code.
  • DEV: Qualifier can be replaced with an import.
  • DEV: Inline comments must end in full-stops, exclamation marks, or question marks.

10.4.31 10/20/2022

  • NEW: Introduce \Request\Entry_Status for user input request sanitization/validation.
  • NEW: Introduce _nonce::create().
  • NEW: Introduce \Utility\_token.
  • NEW: Introduce \Request\Template.
  • NEW: Introduce \Hook\Action\Admin\Template.
  • NEW: Introduce \Request\Role_Capability.
  • NEW: Introduce \Hook\Action\Admin\Role_Capability.
  • NEW: Introduce \Hook\Action.
  • NEW: Introduce \Hook\Action\Admin\Footer.
  • NEW: Introduce \Hook\Action\Admin\Plugin_Row.
  • NEW: Introduce \Hook\Action\Admin\Plugin_Tab.
  • TWEAK: Refactor admin delete entry action links to remove use of the deprecated cnFormObjects::tokenURL() method.
  • TWEAK: Refactor cnAdminActions::setEntryStatus() to utilize \Request\Entry_Status, _nonce::action(), and _validate::adminReferer().
  • TWEAK: Remove use of deprecated cnFormObjects::tokenURL() method.
  • TWEAK: Remove obsolete cellspacing and scope table attributes.
  • TWEAK: Refactor _validate::adminReferer() and _validate::ajaxReferer() to include an $item parameter.
  • TWEAK: Update instances of _validate::adminReferer() to utilize the $item parameter to remove code duplication.
  • TWEAK: Utilize \Request\Admin_Action to get request action.
  • TWEAK: Refactor the cn_manage_actions nonce field to utilize _nonce::field() and be validated using _validate::adminReferer().
  • TWEAK: Add trialing parenthesis to exit.
  • TWEAK: Refactor \Request\_nonce to utilize _nonce utility constant/methods.
  • TWEAK: First pass at removing use of deprecated cnFormObjects nonce methods.
  • TWEAK: Refactor the template admin actions to utilize \Request\Template and \Hook\Action\Admin\Template.
  • TWEAK: Utilize Request\Nonce for creating and validating the vCard download.
  • TWEAK: Refactor the role capability admin actions to utilize \Request\Role_Capability and \Hook\Action\Admin\Role_Capability.
  • TWEAK: Remove unused messages from cnMessage.
  • TWEAK: Register the template actions on the admin_init hook.
  • TWEAK: Utilize \Hook\Action do namespaced action callbacks.
  • TWEAK: Refactor to utilize \Hook\Action\Admin\Footer.
  • TWEAK: Refactor to utilize \Hook\Action\Admin\Plugin_Row.
  • TWEAK: Refactor to utilize \Hook\Action\Admin\Plugin_Tab.
  • DEV: The output of _::highlight_var_dump() should be wrapped in a div.
  • BUG: Run system info token through sanitize_key() so it will match the request sanitization.
  • BUG: Do not show the “View” link on the Manage admin page when the entry is in the moderation queue.
  • BUG: Check for both entry status and visibility when created the download link for the vCard.
  • BUG: The highlight_string() should return, not echo.
  • OTHER: Correct misspellings.
  • DEV: Rename nonce URL to be more descriptive.
  • DEV: Remove commented out unused code.
  • DEV: phpDoc corrections.
  • DEV: phpDoc updates.
  • DEV: Add missing phpDoc.
  • DEV: Remove unused import.
  • DEV: Add inline comment.

10.4.30 10/05/2022

  • NEW: Introduce the Color_Picker field to the Fields API.
  • NEW: Introduce the Slider field to the Fields API.
  • TWEAK: The date picker class should be added when creating the field.
  • TWEAK: Introduce cnMetabox_Render::description() to deduplicate the code to render the metabox field description.
  • TWEAK: Utilize Color_Picker field in the Settings API to remove code duplication.
  • TWEAK: Remove unnecessary class exists check and adjust file indent.
  • TWEAK: Refactor the deprecated methods cnFormObjects::buildSelect() and cnFormObjects::buildRadio() to utilize the Fields API field objects.
  • TWEAK: Return object in Checkbox_Group::addInput() and Radio_Group::addInput() to allow chaining, matching other object methods pattern.
  • TWEAK: Remove unnecessary constructor and class property from cnFormObjects.
  • TWEAK: foreach loop can be replaced with implode().
  • TWEAK: Utilize Radio_Group::setPrefix() to apply the field class and id prefixes.
  • TWEAK: Refactor cnMetabox_Render::fields() to utilize Field\Slider.
  • TWEAK: Small refactor of Field\Rich_Text to set the textarea_name setting parameter automatically.
  • BUG: Correctly apply the prefix to the HTML input classes and id.
  • BUG: The id prefix should be applied to the checkbox and radio group input labels.
  • OTHER: Correct misspellings.
  • DEV: phpDoc updates.
  • DEV: phpDoc corrections.
  • DEV: Move cnFormObjects to the Deprecated folder.
  • DEV: Exit if accessed directly.
  • DEV: Deprecate cnFormObjects::open().
  • DEV: Remove commented out code.
  • DEV: Correct code alignment.
  • DEV: Inline comments must end in full-stops, exclamation marks, or question marks.
  • DEV: Add missing space.
  • DEV: Remove deprecated methods Connections_Directory::displayMessages(), Connections_Directory::setRuntimeMessage(), Connections_Directory::setErrorMessage(), and Connections_Directory::setSuccessMessage().

10.4.29 09/27/2022

  • NEW: Introduce the Date_Picker field to the Fields API.
  • NEW: Introduce Utility\_nonce.
  • NEW: Introduce _validate::adminReferer() and _validate::ajaxReferer().
  • TWEAK: Add compatibility action for Form versions <= 2.7.5.
  • TWEAK: Make anonymous action callbacks static.
  • TWEAK: Remove unused deprecated cnFormObjects::token() method.
  • TWEAK: Remove unused function variable.
  • TWEAK: Remove unused commented out code.
  • TWEAK: Remove unnecessary space.
  • TWEAK: Utilize Request\Admin_Action for improved validation/sanitization in cnAdminMenu::showPage().
  • TWEAK: Utilize Request\ID for improved validation/sanitization in connectionsShowViewPage().
  • TWEAK: Remove instances of deprecated cnFormObjects::close() method throughout.
  • TWEAK: Utilize _nonce::url() to generate the edit entry nonce URLs throughout.
  • TWEAK: Utilize _validate::adminReferer() to validate the edit entry nonce referer.
  • TWEAK: Apply remapFieldOptions() to the checkbox-group settings field type.
  • BUG: Correct related by department typo in content block heading.
  • DEV: phpDoc corrections.
  • DEV: Remove inline code comment.
  • DEV: Deprecate cnFormObjects::tokenField(), cnFormObjects::tokenURL(), and cnFormObjects::getNonce().
  • DEV: Deprecate cnFormObjects::close().