Version: 2.0.0 and higher (there may be separate notes about versions compatibility)

Installation and Update

To add a WordPress Plugin using the built-in plugin installer:

  1. Go to "Plugins -> Add New".
  2. Click "Upload Plugin" button.
  3. Choose downloaded ZIP file and click "Install Now" button.
  4. Make sure that you click on "Activate the plugin". Now you have installed directory plugin, just one last step.
  5. (required) Generate an Envato API Personal Token by clicking this link, take purchase code from your codecanon downloads page, then go to Directory Admin -> Directory Settings page and enter generated access token and purchase code into appropriate settings fields.
  6. (required) Create new page with [webdirectory] shortcode or with [webdirectory custom_home=1] if you wish to build custom home page. Also you might want to create additional pages for frontend submission and dashboard with [webdirectory-submit] and [webdirectory-dashboard] shortcodes if you wish your logged in users to manage their listings, invoices and profile on the frontend dashboard page.
  7. (optional) Create new page with [webdirectory-listing-page] shortcode to build separate page for single listings. Especially when you are building custom home page, so there will not be any other directory elements like on the home page.

Mandatory page with [webdirectory] shortcode must not have child pages, it must be public, not private, not in trash.

WordPress Multisite installation

Upload the plugin on Network Admin plugins page, but don't activate it. It is not allowed to enable "Network Activate" for the plugin on Network plugins page, instead activate it on the plugins page of each sub-site. Also note, that each activation on each sub-site requires separate license.

How to update

Since version 2.1.0 the plugin supports automatic updates, you just need to use Personal Access Token and your purchase code from codecanyon as described in installation instructions.

Following procedure required for manual update of the plugin:
First of all download the latest version of the plugin from Codecanyon. Simply unpack the archive with new version and upload all new files and folders from w2dc/ folder to your plugin folder on the host (usually the name of this folder on the host is "wp-content/plugins/codecanyon-6463373-web-20-directory-plugin-for-wordpress/"), that is all, the system will automatically execute all needed operations. All files and folders must be uploaded using FTP-client (like FileZilla) or using file manager in your hosting control panel. It would be better to make backups of the database and all plugin files before update. All your configurations, settings and data will be saved after update, you will not lose anything. Do not forget to clear cache of your site (if any caching system is used) and in the browser. Files modifications must follow customization instructions, in this case they will be saved during update. Your translated languages files must be saved in "wp-content/languages/plugins/" folder.

If you have any problems after update - double check you uploaded all new files and did not miss any file or folder. Do not forget to clear cache of your site (if any caching system is used) and in the browser.


Getting started

So you get your instance of the plugin installed and ready for use. Now lets set up most important settings and options. Note, that you can manage and change following settings any time you wish, but it is recommended to set up before your directory site becomes public. Here is some suggestions on how to get familiar with the plugin in right way:

  1. First of all configure your directory using special built-in settings panel. Three addons included in the plugin: frontend submission & dashboard addon, payments addon and ratings addon.
  2. Set up listings directories and listings levels, by default there is one default "Listings" directory and one "Standard" level.
  3. Manage existing core fields and create additional content fields for your needs.
  4. Build your own directory categories tree and tags.
  5. Configure locations: define directory locations tree and look at locations levels.
  6. Create some test listings and explore how listings behave themselves at the frontend, explore additional options and tools they have.

Directory settings

First of all look at "Directory Admin -> Directory settings" page. There are some separate tabs with own groups of settings.

General settings tab

settings
There are 3 available addons, if you do not need unnecessary functionality - do not enable them:

Frontend submission & dashboard addon - allow users to submit new listings at the frontend side of your site, also provides users dashboard functionality.

Payments addon - includes payments processing and invoices management functionality into directory/classifieds website.

Ratings addon - ability to place ratings for listings, then manage these ratings by listings owners.

AJAX Loading

Use AJAX loading - load maps and listings using AJAX when click on search button, sorting buttons, pagination buttons.

Initial AJAX loading - initially load listings only after the page was completely loaded. Recommended only for heavyweight pages.

Display "Show More Listings" button instead of default pagination - when switched off - default pagination will be used.

Directory title - this string will appear in the title of all frontend pages related with the directory plugin. This could be overwritten by WP SEO by Yoast plugin.

Notice about slugs:
You can manage listings, categories, locations and tags slugs in listings directories setting.

Listings permalinks structure - set up permalinks structure of single listings pages. Examples of listings URLs:

/%postname%/ https://www.yoursite.com/directory/listing-name/
/%post_id%/%postname%%/ https://www.yoursite.com/directory/644/listing-name/
/%listing_slug%/%postname%/ https://www.yoursite.com/directory/business-listing/listing-name/
/%listing_slug%/%category%/%postname%/ https://www.yoursite.com/directory/business-category/listing-name/
/%listing_slug%/%location%/%postname%/ https://www.yoursite.com/directory/business-place/listing-name/
/%listing_slug%/%tag%/ https://www.yoursite.com/directory/business-tag/listing-name/

/%postname%/ works only when directory page is not front page.

When one of following structures was activated: /%listing_slug%/%category%/%postname%/, /%listing_slug%/%location%/%postname%/ and /%listing_slug%/%tag%/%postname%/ - only first category, location or tag of the listing is used.

in above examples /directory/ - is the slug of directory page with main [webdirectory] shortcode. You can change it on this page edition screen. /business-listing/, /business-category/, /business-place/, /business-tag/ - these are listing, category, location and tag slugs, manage them in listings directories settings. In appropriate permalinks structures they are required and can not be removed from URLs.

Frontend submission and dashboard

These are additional settings for frontend submission, they become available when "Frontend submission & dashboard addon" was enabled.

Select frontend submission login mode -

  • login required - logged in users have an ability to manage their listings, invoices and profile on the frontend dashboard page.
  • necessary to fill in user info form - user info form asks user to fill in his name and email fields. After successful submission WordPress creates new user profile. If user with entered email already exists in the system - it isn't required to create new profile and listing will just be assigned with existed user. Later admin may manage and contact new user when needed. For new user registration email with automatically generated password will be sent.
  • not necessary to fill in user info form - the same behaviour as for previous option, but it is not required to enter contact info. For empty contact form the system creates anonymous user profile. Registration email will be sen onlyt when user enters his email.
  • do not even show user info form
  • - WordPress creates new anonymous user profile in the system, but no login information will be sent, just because there is no email to send.

Enable pre-moderation of listings - moderation will be required for all listings even after payment.

Enable moderation after a listing was modified - with enabled moderation listing status become pending.

Hide choose level page - when all listings levels are similar and all has packages of listings, user do not need to choose level to submit when he already has a package, so you can enable this option. Choose level page will be skipped only when user is logged in and has available listings in his package.

Enable submit listing button - show/hide submission button on directory pages. In some cases web developers can place own custom submission link or button somewhere else, for instance in main menu of a site. Also the page with [webdirectory-submit] shortcode is required to show this button.

Hide top admin bar at the frontend for regular users - when this option enabled - regular user will never see backend of your site. It is recommended to enable when you have the page with [webdirectory-dashboard] shortcode.

Allow users to manage own profile at the frontend dashboard - enable this option if you wish your users to manage own profile at the frontend dashboard page.

Enable listings tags input at the frontend - during listing creation/edition you may hide tags input.

Require Terms of Services on submission page? - select or create new WordPress page containing your TOS agreement and assign it using this setting.

Use custom login page for listings submission process - when submission requires login - user has to login using default login form. But web developer can use 3rd party plugin to make custom login page and then assign it with submission process using this setting.

Use custom login page for login into dashboard - the same as previous setting. Assign custom login page for frontend dashboard.

Claim Functionality

Enable claim functionality - enable/disable claim functionality at the frontend. When enabled - each listing has option "allow claim", by checking this option you allow registered users to claim this listing. When claim allowed – the button "Is this you ad?" appears on listing's details page, this button opens claim form. This button appears only when user is not logged in as current listing owner, Frontend submission addon was enabled and when page with [webdirectory-dashboard] shortcode exists.

When claim request was sent – notification about claim for this listing will be sent to the current listing owner.

After approval claimer will become owner of this listing and receive email notification about successful approval.

Also there is the option in CSV importer to set up all imported listings as claimable.

Approval of claim required - when switched on any claimed listing requires approval of claim by current listing owner. In other case claim will be processed immediately without any notifications.

What will be with listing status after successful approval? - when set to "just approval" option – the status of claimed listing will not be changed after approval. "Expired status" option means that after approval of claimed listing – it becomes expired and new owner have to renew it to make listing active. Renewal of listing may be payment option.

Hide contact form on claimable listings - just hide contact form when listing is set to be claimed.

Hide claim metabox at the frontend dashboard - with this setting only admin may set up listing to be claimed.


Listings settings tab

Show listings on index - this option controls whether to show listings on index page.

Number of listings on index page

Number of listings on excerpt pages (categories, locations, tags, search results)

Enable contact form on listing page - whether to show contact listing owner form in a separate tab on single listing page.

Contact Form 7 shortcode - the plugin was adapted to work with Contact Form 7 plugin. Insert shortcode generated by CF 7 plugin in this field and CF 7 form will be displayed instead of standard contact form. This will work only when CF 7 plugin enabled, otherwise standard contact form will be displayed.

Allow custom contact emails - users can fill in custom contact email, otherwise contact messages will be sent directly to listing authors email address from his profile.

Enable bookmarks list - this option enables/disables "My bookmarks" functionality: when enabled - at the frontend on single listings pages it shows "Add/Remove Bookmark" button. When user clicks to add in bookmarks - the system saves current listing in his cookie, user may click "My bookmarks" and display all his saved listings.

Show print listing button - show/hide print listing button on single listing page.

Show listing in PDF button - show/hide "Save listing in PDF" button on single listing page. Please note, that this feature uses free 3rd party service pdfmyurl.com. The speed and quality of this service depends on your own server and site accessibility.

Allow regular users to change listings expiration dates - with this enabled setting listings owners can manually change expiration dates of their listings, after that date their listings become expired. The change of expiration dates available only for listings with limited active period, not for eternally active listings. Administrators can control expiration dates even if this option is disabled.

Hide comments number from index and excerpt pages - the number of comments or reviews will be hidden from index and excerpt pages and visible only on listing pages on special tab.

Hide listings creation date - listings creation date will be hidden at the frontend.

Hide author information - author name and possible link to author website will be hidden on single listing pages.

Listings comments mode - with enabled option "As configured in WP settings" comments visibility depends on WordPress discussion settings - "Allow people to post comments on new articles". Also it depends on individual listing setting "Allow comments" on each listing edit screen.

Priority of opening of listing tabs - what tab to be opened first on single listing page.

Enable statistics functionality - statistics charts visible on frontend users dashboard. At the backend only total number of clicks visible.

Enable breadcrumbs - show/hide breadcrumbs links on single listings pages.

Hide home link in breadcrumbs - "Home" link will be hidden.

Breadcrumbs mode on single listing page - examples of breadcrumbs:

  • %listing title% - Home » Super Shopping in LA
  • %category% » %listing title% - Home » Business Services » Advertising, Marketing & PR » Super Shopping in LA
  • %location% » %listing title% - Home » United States » California » Los Angeles » Super Shopping in LA

Listings logos & images

Enable lightbox on images gallery - switch on/off lightbox effect for images gallery on single listing pages.

Enable automatic rotating slideshow on images gallery - switch on/off auto slider for images gallery on single listing pages.

The delay in rotation (in ms) - the delay between rotation of slides (in milliseconds).

Exclude logo image from images gallery on single listing page - logo image will be visible only on index and excerpt pages, it will be excluded from single listing page.

Enable default logo image - when logo image file was not uploaded the directory will show default image.

Default logo image - this image will appear when listing owner did not upload own logo.

100% width of images gallery on single listing page - make images galley full width of single listing page. When disabled - next setting will be used.

Images gallery width on single listing page (in pixels) - this option works when previous setting was switched off. Images gallery on listing page places at the left side within provided width, right side contains text information.

Images gallery main slide mode - this setting fits images for their proportions you preferred on your site: "Cut off image to fit width and height of main slide" for popular rectangular images (in this case images may be scaled and cut off) or "Full image inside main slide" for tall and thin images (so images will be scaled to be fully placed inside main slide).

Description & Excerpt settings

Enable description field - main description text editor can be hidden from listing.

Enable summary field - summary/excerpt field can be hidden from listing.

Excerpt max length - insert the number of words you want to show in the listings excerpts.

Use cropped content as excerpt - when excerpt field wasn't filled in by user - cropped description content will be used.

Strip HTML from excerpt - check the box if you want to strip HTML from the excerpt content.


Pages & views tab

Excerpt views

Show listings number - show/hide label "Found N listings" at the top of listings block.

Enable views switcher - show/hide views switcher at the top of listings block.

Listings view by default - user can change default view.

Listing title mode - how to display listing title and rating stars (when ratings addon enabled) on excerpt pages, inside listing logo or outside it.

Logo image mode - this setting fits images for their proportions you preferred on your site: "Cut off image to fit width and height listing logo" for popular rectangular images (in this case images may be scaled and cut off) or "Full image inside listing logo" for tall and thin images (so images will be scaled to be fully placed inside logo area).

Number of columns for listings Grid View - from 2, 3 or 4 columns for this type of view.

Aspect ratio of logo in Grid View - 1:1 (square), 4:3, 16:9 or 2:1

Wrap logo image by text content in List View - with enabled option logo image will be wrapped by text - it gives more space for long texts on excerpt pages. Disabled option will give some kind of separate columns: left side will take logo image, right side - text content.

Listing thumbnail logo width (in pixels) in List View - controls the width of logo image in List view.

Categories settings

Show categories list on index and excerpt pages - whether to show categories list on directory pages or not.

Categories nesting level - when set to 1 - only root categories will be listed.

Categories columns number - divide categories into 1, 2, 3 or 4 columns.

Show subcategories items number - this is the number of subcategories those will be displayed in the table, when category item includes more than this number "View all subcategories ->" link appears at the bottom.

Show category listings count - whether to show number of listings assigned with current category in brackets.

Locations settings

Show locations list on index and excerpt pages - whether to show locations list on directory pages or not.

Locations nesting level - when set to 1 - only root locations will be listed.

Locations columns number - divide locations into 1, 2, 3 or 4 columns.

Show sublocations items number - this is the number of sublocations those will be displayed in the table, when location item includes more than this number "View all slocations ->" link appears at the bottom.

Show location listings count - whether to show number of listings assigned with current location in brackets.

Sorting settings

Show "order by" options - show/hide sorting options.

Allow sorting by date - switch on/off sorting by date.

Allow sorting by title - switch on/off sorting by title.

Allow sorting by distance when search by radius - "Distance" option link will appear when user searches listings by distance.

Default order by - select by which parameter listings will be ordered by default.

Default order direction - select "ascending" or "descending" direction.

Exclude listings with empty values from sorted results - content fields those weren't filled in become empty after listing save, with enabled setting sorting by content field will exclude such listings from sorted results.

Sticky and featured listings always will be on top - when switched off - sticky and featured listings will be on top only when listings were sorted by date. When enabled - sticky and featured listings will be on top sorting by title, rating, additional content fields, except search by radius. When user searches listings in radius - default sorting is by distance from center point.

More information about sorting.

Some content fields types, like date-time, number, price, text string types, have own setting to allow order by these fields.

Ratings settings

All these settings appears when ratings addon is active. Each listings level has separate option to enable/disable ratings in this level.

Only registered users may place ratings - this setting restricts unregistered users to rate listings, when this setting unchecked - anyone can rate any listing. Please note, that when user places new rating, the plugin creates new record with ID of registered member, for anonymous users - the plugin stores their IPs, also the plugin saves cookie in user's browser. User can change his rating later.

Show rating in map info window - renders 5-stars rating in map info window.

Allow users to flush ratings of own listings - when this option was checked - listing owner has ability to flush current rating of his listing.

Allow sorting by ratings - switch on/off sorting by ratings.


Search settings tab

[webdirectory-search] shortcode and search widget do not follow some of these settings (they follow only when they were set up to be a part of custom home page). They have own parameters.

Some additional explanation about plugin search engine and its fields here.

Display search block in main part of page - note, that search widget is independent from this setting and this widget renders on each page where main search block was hidden.

Enable categories search - enable/disable categories menu in the search field.

Categories search depth level - 1, 2 or 3 levels of categories tree to display in categories menu.

Enable keywords search - enable/disable search by keywords.

Enable locations search - enable/disable locations menu in the search field.

Locations search depth level - 1, 2 or 3 levels of locations tree to display in locations menu.

Enable address search - enable/disable search by address. Addresses field has autocomplete functionality by Google Places.

Show listings counts in locations search dropboxes - whether to show number of listings assigned with current location in brackets.

Hide empty locations - this setting is actual for main search block, search widget and locations menus.

Show listings counts in categories search dropboxes - whether to show number of listings assigned with current category in brackets.

Hide empty categories - this setting is actual for main search block, search widget and categories menus.

Show locations radius search - show/hide radius slider in search form.

Dimension in radius search - which dimension to use: miles or kilometers.

Minimum radius search - set the minimum value for radius slider.

Maximum radius search - set the maximum value for radius slider.

Default radius search - this value will be set by default in radius slider. If you have problems with radius search: check your server google API key and enabled APIs. Check geolocation response.


Maps & Addresses tab

[webdirectory-map] shortcode and map widget do not follow some of these settings (they follow only when they were set up to be a part of custom home page). They have own parameters.

Maps settings

Show map on index page - whether to show Google map on index (home) directory page.

Show map on excerpt page - whether to show Google map on excerpt directory pages: search, categories, locations pages.

How many map markers to display on the map - choose what map markers to display: the only map markers of visible listings will be displayed on current page or all map markers.

Show directions panel for individual listing map - frontend users may pave the route on Google map and get the list of directions for selected location separately, note that there may be more than one location of each listing.

Directions functionality - built-in onsite routing or redirect to build routes on Google Maps service (tablet and mobile devices may use own maps applications)

Default Google Maps zoom level - this zoom level is used during listing submission, the range is 1-19. 1 - the lowest zoom (whole world), 19 - the highest zoom (individual buildings, if available).

Google Maps style - ability to set custom Google Map style, by default there are 10 map styles, information about map styles stores in php array in "maps_styles.php" file.

Default map height (in pixels) - default map height on main directory pages.

Show cycle during radius search - by this option you may hide red transparent cycle that appears on map during locations search in radius.

Enable clusters of map markers - when checked - map markers will be grouped in clusters.

Make map markers mandatory during submission of listings - when checked - listing must have at least one map marker.

Enable default user Geolocation - this functionality requires HTTPS enabled.

Default zoom level - recommended to keep it 'Auto', so map will zooms to display all available markers in the map window.

Maps controls settings

Enable Draw Panel - users can draw a shape on the map and find map markers inside drawn area. Very important: MySQL version must be 5.6.1 and higher or MySQL server variable "thread stack" must be 256K and higher. Ask your hoster about it if "Draw Area" does not work.

Show search form and listings panel on the map - search and display listings information directly on the left-side panel inside map window.

Enable full screen button - enable/disable full screen button.

Enable zoom by mouse wheel - this setting only for desktops.

Enable map dragging on touch screen devices - when enabled - users can zoom and pan by using two-finger movements on the map for touchscreen devices.

Center map on marker click - the map will center on marker.

Hide compact search form on the map for mobile devices - this setting will affect all maps: directory pages, map shortcodes, map widgets.

Addresses settings

Default country/state for correct geocoding - this value needed when you build local directory, all your listings place in one local area - country, state or city. This hidden string will be automatically added to the address for correct geocoding when users create/edit listings and when they search by address.

Order of address lines - order address elements as you wish, commas and spaces help to build address line.

Restriction of address fields for one specific country (autocomplete submission and search fields) - restrict autocomplete functionality by Google Places only to one selected country or keep it worldwide.

Enable address line 1 field - enabled/disable address line 1 field in locations metaboxes.

Enable address line 2 field - enabled/disable address line 2 field in locations metaboxes.

Enable zip code - enabled/disable zip code field in locations metaboxes.

Enable additional info field - enabled/disable additional info field in locations metaboxes.

Enable manual coordinates fields - enabled/disable manual coordinates fields in locations metaboxes.

Map markers & InfoWindow settings

Type of Map Markers - 2 possible types: Font Awesome icons (recommended) - icons from the Font Awesome set will be used, PNG images - custom images from "w2dc/resources/images/map_icons/icons/" folder. Site administrator may upload additional icons in this folder via the Files manager of hosting control panel or via FTP.

Using Font Awesome icons it is possible to select default icon and color of map marker. When "Custom markers on google map" option enabled in listings levels settings - users will be able to select specific icon for each marker. On "Directory listings -> Directory categories" page it is allowed to select specific marker icon and color for each category.

Other settings related to custom PNG images. Do not touch these settings if you do not know what they mean. Modification of these settings needed when you use own custom map markers icons with own sizes. If you are using custom markers PNG images, it is recommended, they all be of same size.

map_marker_structure


Email notifications tab

If you have any problems with email sending/receiving - look at the troubleshooting section.

This email will be used for notifications to admin and in "From" field. Required to send emails. - enter admin email address.

Days before pre-expiration notification will be sent - one-time email with pre-expiration notification text will be sent to the email box of listing owner.

Pre-expiration notification - tags allowed: [listing] - listing name, [days] - number of days from previous setting, [link] - the link on the listing.

Expiration notification - tags allowed: [listing] - listing name and [link] - the link on the listing.

Registration of new user notification (this is frontend submission addon setting) - tags allowed: [author] - listing author name, [listing] - listing name, [login] - user login, [password] - user password, automatically generated by the system.

Notification to admin about new listing creation (this is frontend submission addon setting) - tags allowed: [user] - listing author name, [listing] - listing name, [link] - the link on the listing.

Notification to admin about listing modification and pending status (this is frontend submission addon setting) - tags allowed: [user] - listing author name, [listing] - listing name, [link] - the link on the listing.

Notification to author about successful listing approval (this is frontend submission addon setting) - tags allowed: [author] - listing author name, [listing] - listing name, [link] - the link on the listing.

Notification of claim to current listing owner (this is frontend submission addon setting) - tags allowed: [author] - the name of current author of the listing, [listing] - listing name, [claimer] - claimer user name, [link] - the link to approve or reject the claim, [message] - message from claimer.

Notification of successful approval of claim (this is frontend submission addon setting) - tags allowed: [listing] - listing name, [claimer] - claimer user name, [link] - the link on the listing.

Notification of claim decline (this is frontend submission addon setting) - tags allowed: [listing] - listing name, [claimer] - claimer user name.

Notification of new invoice (this is payments addon setting) - tags allowed: [invoice] - invoice title, [id] - invoice ID, [billing] - billing information, [item] - item name, [price] - item price, [link] - the link on the invoice.

Notification of paid invoice (this is payments addon setting) - tags allowed: [author] - invoice author name, [invoice] - invoice title, [price] - item price.


Advanced settings tab

Google API

Google browser API key - get your Google API key here, following APIs must be enabled in the console: Google Maps Directions API, Google Maps JavaScript API and Google Static Maps API.

Google server API key - get your Google API key here, following APIs must be enabled in the console: Google Maps Geocoding API and Google Places API Web Service.

How to create Google API keys you can find here.

JavaScript & CSS

Include directory JS and CSS files on all pages - sometimes it is required to enable this option.

Enable lightbox slideshow - this adds functionality to watch listings images as full size animated slideshow. Also may be disabled in order to avoid conflicts with other javascript slideshow plugins.

Do not include jQuery UI CSS - some themes and 3rd party plugins include own jQuery UI CSS - this may cause conflicts in styles.

Miscellaneous

Overwrite WordPress page title by directory page title - some themes do not allow this or may cause issues.

Prevent users to see media items of another users - by default WordPress allows users to manage ANY attachments owned by other users at the backend dashboard panel. This option prevent such behaviour.

Enable autocomplete on addresses fields - disable if you are using predefined locations tree and do not want to see country, city, e.t.c. in the input autocomplete field.

Enable "Get my location" button on addresses fields - enable/disable geolocation button on addresses fields. Requires HTTPS.

reCaptcha settings

reCaptcha is used on contact listing owner forms and frontend submission form. You may get your reCAPTCHA API Keys here

WPML Settings

This section appears when WPML plugin is active.

Force WPML language on maps - ignore the browser's language setting and force it to display information in a particular WPML language.

Enable frontend translations management (this is frontend submission addon setting) - enable/disable management of translations on users frontend dashboard.

Woocommerce

This section appears when WooCommerce plugin is active and directory plugin payments addon disabled. Additional information you can find in WooCommerce section.

WooCommerce payments for the directory - enable this option to use Woocommerce payment system along with Web 2.0 Directory plugin.

Any services are Free for administrators - when this option is checked - the system will never create invoices for administrators, all services always will be free for them.

On checkout page subscription enabled by default - the setting for WooCommerce Subscriptions plugin. With WooCommerce Subscriptions plugin installed - directory would be able to create subscriptions for listings with limited active period (not eternal listings) to charge users for their listings through some period of time, e.g. daily, monthly, annually. By default on checkout page "enable subscription" empty checkbox appears, with enabled setting, this checkbox will be checked.


Customization tab

Color palettes

Compare palettes at the frontend - this setting enables special interactive widget helping to compare color palettes. Do not forget to switch off this setting when comparison will be completed.

color_palette_widget

When you want to finish and hide this widget - click bottom link and you'll be redirected to the settings page, preferred color palette already will be selected and you just need to save changes. While you didn't disable comparison setting, this widget still be at the frontend.

Color palette - selecting any of palettes will automatically change color settings below, like links and buttons colors, background of the search form, primary and secondary colors, jQuery UI style. Changes will not appear until you click save button.

It would be better to experiment and test other customization settings directly on the site.


Social Sharing tab

Note, that 3rd party social sharing plugins aren't able to share single listings pages, so instead you have to use built-in social sharing buttons.

social_buttons

Buttons style - there are 3 sets of buttons, image files place in subfolders of "resources/images/social/".

Include and order buttons - choose which social sharing services you need and order their buttons.

Enable counter - enable/disable counter near social sharing buttons. Note, that enabled counter takes some time to load social sharing block on the page.

Buttons place - some possible places for social sharing block on the page.

Social buttons width - this setting controls the size of buttons.


Payments tab

This tab appears after activation of payments addon.

There is alternative payments system. You can use WooCommerce payments. It has lots of advantages and features based on WooCommerce plugin power.

General payments setting

Any services are Free for administrators - when this option is checked - the system will never create invoices for administrators, all services always will be free for them.

Currency - the list of possible currencies used for payments.

Following settings are not related to price content fields. To see content fields settings - click on "Configure" link near price content field.

Currency symbol or code - this symbol or code will appear on frontend/backend pages.

Currency symbol or code position - choose preferred position of currency symbol/code.

Decimal separator - decimal separator of price value, possible values: dot or comma.

Hide decimals in levels price table - show/hide decimals (cents) on levels price table at the frontend.

Thousands separator - the separator for thousands, millions, billions, ... Possible values: no separator, dot, comma or space.

Sales tax

Enable taxes - enable/disable taxes functionality.

Selling company information - this information will appear on invoice page.

Tax name - abbreviation, e.g. "VAT".

Tax rate - insert tax rate in percents.

Include or exclude value added taxes - do you want prices on the website to be quoted including or excluding value added taxes?

Bank transfer settings

Allow bank transfer - allow users to select "Bank transfer" payment method.

Bank transfer information - this information appear on print invoice page. Provide whole instructions and payment requisite.

PayPal settings

Business email - PayPal merchant email.

Allow single payment - when this option is checked - "PayPal" payment gateway available.

Allow subscriptions - when this option is checked - "PayPal subscription" payment gateway available. Only for listings with limited active period. Look at additional information.

Test Sandbox mode - allows to test the process of payment using PayPal sandbox credentials. You must have a PayPal Sandbox account setup before using this feature.

Stripe settings

Test secret key

Test publishable key

Live secret key

Live publishable key

The publishable key is used to generate credit card tokens and should be included with the HTML form. The secret key is used for all other API calls on the server-side.

Test Sandbox mode - Before activating your account, you can only interact with Stripe in test mode. With the exception of the ability to make a real charge to a credit card, all of Stripe's features are available in test mode.


Directory categories

Site admin may create/edit/delete special categories items. Management of directory categories tree has exactly the same functionality as standard WordPress categories, but these are separate items and have special administration page "Directory listings -> Directory categories".

Custom icons may be associated with directory categories. By default there are 77 icons files inside "resources/images/categories_icons/" folder of the plugin. Site administrator can upload additional icons in this folder via the Files manager of hosting control panel or via FTP.

Using Font Awesome icons it is possible to select specific marker icon and color for each category.

[webdirectory-categories] shortcode has a bunch of parameters. By default it allows to build nice looking table. Category image selected in category settings is used as a background of root categories.

Additional content fields can be dependent from categories. Admin configure specific fields to display when appropriate category was selected. By the way, content fields can be dependent from listings levels as well.


Directory locations

There are 3 ways to provide locations functionality on directory site:

  1. Use predefined locations - this way users are able to use previously defined locations for their listings. Autocomplete on addresses fields and "Get my location" button on addresses fields should be disabled. So addresses fields will be used by users to manually fill in streets, buildings, postal codes, e.t.c. Also search by address should be disabled in the search form. Visitors will search listings only by previously defined locations drop-down menu. Actually radius search is not necessary in this method.
  2. Use addresses fields - do not need to insert predefined locations. Users will use only addresses fields, autocomplete function and "Get my location" button on addresses fields will help them. Listings addresses fields (address line 1, address line 2, zip code) should contain whole information about country, state, city, region, streets, buildings, postal codes e.t.c. To get correct search results with nearby locations it is quite recommended to enable search by radius and set up default radius value in the search settings.
  3. Both methods (default) - usage of predefined locations + addresses fields. But in this case information in addresses fields may contain country, state, city, region, the same as selected predefined locations. It is recommended to exclude locations levels from address line.

Some additional explanation about plugin search engine and its fields here.

Predefined locations

Site admin may create/edit/delete special predefined locations items. Management of directory locations tree has exactly the same functionality as standard WordPress categories, but these are separate items and have special administration page "Directory listings -> Directory locations"

Custom icons may be associated with directory locations. By default there is only one image file inside "resources/images/locations_icons/" folder of the plugin. Site administrator can upload additional icons in this folder via the Files manager of hosting control panel or via FTP.

[webdirectory-locations] shortcode has a bunch of parameters. By default it allows to build nice looking table. Location image selected in location settings is used as a background of root locations.

After locations levels were successfully configured and locations tree completed - users may select any predefined location from select boxes group on create/edit listing page.

predefined_locations

Listings levels have an option to allow users to select more than 1 location for each listing.

Locations levels

Just in some words, locations levels - these are names of nesting levels of directory locations tree. By default there are 3 locations levels: Country, State and City. Site admin can manage locations levels and exclude any of them from address strings.

When your directory will be used locally, for example, for visitors from one country or one state/region - do not delete unnecessary locations levels and predefined locations, they are required to set correct location point at the Google map during listings creation/edition. You can just exclude needed locations levels from address line - there is such option for each locations level, it allows to build custom address line at the frontend. See examples:

Also when you set up local directory - it is recommended to fill in "Default country/state for correct geocoding" setting.


Listings directories

The plugin has an ability to build multi-directory website. By default there is one "Listings" directory, this standard directory can not be removed. Each directory must have own page with its unique shortcode.

Each directory follows same settings from built-in settings panel. But administrator can build custom home page with individual shortcode parameters. Each directory has options to set up separate locations, categories and levels, those will be available for this directory. In the same way listings levels can own separate content fields, so each directory can have individual content fields.

Directory settings:

Directory name - the name of directory.

Single form and Plural form - the name of directory items in 2 forms. Examples: plural form - "Found 5 listings", single form - "Found 1 listing".

Listing slug - this is a part of URL for single listing page, for example, in this URL https://www.yoursite.com/directory/listing/name name - is the name of listing and listing - is the slug. Listing slug take part in some permalinks structures, see above about listings permalinks structure.

Category slug - this is a part of URL for categories sections, for example, in this URL https://www.yoursite.com/directory/listing-category/business/ business - is the name of category and listing-category - is the slug.

Location slug - this is a part of URL for locations sections, for example, in this URL https://www.yoursite.com/directory/listing-place/united-states/los-angeles/ united-states/los-angeles - is the path of locations tree and listing-place - is the slug.

Tag slug - this is a part of URL for tags sections, for example, in this URL https://www.yoursite.com/directory/listing-tag/service/ service - is the name of tag and listing-tag - is the slug.

Slugs must contain only alpha-numeric characters, underscores or dashes. All slugs must be unique and different.

Assigned categories - you can define some special categories, those will be available for this directory.

Assigned locations - you can define some special locations, those will be available for this directory.

Listings levels - you can define some special levels, those will be available for this directory.

In order to set up a page with needed directory - copy-paste appropriate shortcode from "Directory Admin -> Listings directories" table. In the same way you can create separate pages for frontend submission and single listings pages for each directory. Use their shortcodes with appropriate parameters. Example for the second directory with ID=2: [webdirectory-submit id="2"], [webdirectory-listing-page id="2"]. These are optional pages, by default the system will use frontend submission and single listings pages of the standard directory shortcodes [webdirectory-submit], [webdirectory-listing-page].


Listings levels

Levels of listings control the functionality and of listings and their directory/classifieds conception. It's some sort of listings payment plans.

Each listing may belong to one of defined levels, some may have eternal active period, have sticky status and enabled google maps, others may have greater number of allowed attached images or videos. It is perfect base for business model of your directory or classifieds site. On "Directory Admin -> Listings levels" page you can order existed levels by drag & drop rows in the table, the order of levels affects on submission table. Here is the list of listings levels options:

Level name - the name of level. Special note: by default there is one standard listing level after installation of the plugin and the system doesn't show advertise table on the 1st step of listings creation, because it doesn't need to select the level for newly created listing.

There is "Hide choose level page" setting. When all listings levels are similar and all has packages of listings, user do not need to choose level to submit when he already has a package, so you can enable this option. Choose level page will be skipped only when user is logged in and has available listings in his package.

Level description - uses only in the advertise table on the 1st step of listings creation.

Eternal active period - when enabled - listings of this level will never expire.

Active period - in years, months and days. During this period the listing will have active status, then the status of listing become expired. After expiration listing owner or admin may prolong and renew listing.

Change level after expiration - after expiration listing will change level automatically. By default listings will just suspend.

Site admin can build such business model, when after expiration of listing of free level it will be suspended and moved to payment level. So it is some kind of trial period, users will have to pay after free period to activate their listings.

Number of listings in package - enter more than 1 to allow users get packages of listings. Users will be able to use listings from their package to renew, raise up and upgrade existing listings. Also site administrators are able to manage the number of directory listings available for each user on his profile edition page.

woo_listings_available

Ability to raise up listings - if this option is checked - listing owner or admin may raise listing up in all lists those ordered by date.

Sticky listings - if this option is checked - listings of this level will be always sticked on top of all lists those ordered by date.

Featured listings - listings of this level have special css class "w2dc_featured", may be customized to be highlighted and attract attention.

Do listings have own pages? - this option could disable listings self pages, so there will not be any links to listings pages, just that information on excerpt pages.

Enable nofollow attribute for links to single listings pages - Description from Google Webmaster Tools

Enable google map - users have an ability to place location(s) marker on Google map.

Enable listing logo on excerpt pages - listings of this level own uploaded image as logo.

Images number available - the number of images allowed to upload for listings of this level.

Videos number available - the number of YouTube videos allowed to embed for listings of this level.

Listings price - price for listings activation and renewal. Appears when payments addon was enabled.

Listings raise up price - price for listings raise up option. Appears when payments addon was enabled.

Ratings - enable ratings for listings of this level. Appears when ratings addon was enabled.

Locations number available - the number of locations allowed to be assigned with listings of this level. Set 0 to disable locations in this level.

Custom markers on google map - whether listings authors can select custom marker icons on the map. Or default icon will be used.

Categories number available - the number of categories allowed to be assigned with listings of this level. When during listing creation/edition user exceeded this number - the warning message will arise. Also it is possible to set unlimited number of categories. Set 0 to disable categories in this level.

Assigned categories - admin can define some special categories, those would be available for listings of this level. When during listing creation/edition user will click unavailable category checkbox - the warning message will arise.

Assigned locations - admin can define some special locations, those would be available for listings of this level.

Assigned content fields - specific categories fields available in current listings level.


Content fields & content fields groups

Additional content fields is one of the most important part of the directory and classifieds sites. They allow to add some additional information to directory listings. Content fields take part in the search and sorting of listings. On "Directory Admin -> Content fields" page admin can order existing content fields by drag & drop rows in the table.

content_fields_links

Each field type defines own behaviour and view of a content field. There are settings to hide field name, select custom field icon, set field as required, manage visibility on pages. Listings can be ordered by some content fields. Note, that you can assign fields for specific categories and/or specific levels.

Content fields types:

Field Type name Core Searchable Sortable
Content content + + -
Excerpt excerpt + + -
Listing addresses address + + -
Listing categories categories + + -
Listing tags tags + + -
Text string string - + +
Textarea textarea - + -
Digital value number - + +
Select list select - + -
Radio buttons radio - + -
Checkboxes checkbox - + -
Website URL website - - -
Email email - - -
Date-Time datetime - + +
Price price - + +
Opening hours hours - - -
File upload fileupload - - -

There are 5 core field types, during initial installation the system creates 5 content fields. Core fields have special destination. This is impossible to delete any of these fields. But it is possible to disable content and excerpt fields on Listings settings tab, "Enable listings tags input at the frontend" setting on General settings tab controls tags input. Listing addresses and listing categories can be disabled in listings levels settings. You can't edit slugs of core fields, can't order by them, can't set specific categories list, can't use in search.

About customization of content fields at the frontend. Each content field has following classes in their HTML output:

  • w2dc-field-output-block - common class
  • w2dc-field-output-block-{type name} - specific to content field type name (take from the list above)
  • w2dc-field-output-block-{ID} - specific to content field ID

The plugin can use custom template files for each content field. Content field template files place in "templates/content_fields/fields/" folder. In order to customize input and output templates - create or copy needed template file with the following name structure (take type name from the list above):

  • {type name}_output_{ID}.tpl.php - for the frontend markup
  • {type name}_input_{ID}.tpl.php - for the backend input markup

So custom template files will be used instead of native templates. Follow customization instructions.

Content fields settings

Field name - required and used on listings administration page and in the search block.

Field slug - this option required and isn't able to edit for core fields.

Hide name - when checked - the name of field will be hidden at frontend pages.

Field description - this will be like a hint for users who fill in details into a field.

Icon image - select an icon from Font Awesome icons list for any content field, it will be displayed at frontend pages.

Field type - it is possible to change field type, but only for non-core fields.

Is this field required? - most of types of fields can be set as required and some can not - listings categories, listings tags, listings addresses.

Order by field - listings may be ordered by content fields

On excerpt page - show value of this field on index and excerpt pages.

On listing page - show value of this field on listings pages.

In map marker InfoWindow - show value of this field in map marker info window.

Search by this field - take part in the search of listings. Some field types have special configuration options.

On advanced search panel - when disabled - this field will appear directly on the search form, when enabled - this field will be hidden by default and appear only in advanced search block: "More filters" and "Less filters" switcher on the search form.

Now in details about each content field type:

Content (core field type)

At the backend this is richtext editor field to store general content of listings. Can't be ordered by its value, can't be searched by its value. By default this field is hidden on index and excerpt pages and visible only on listings pages.

Excerpt (core field type)

The WordPress Excerpt is an optional summary or description of a listing; in short, a listing summary. Can't be ordered by its value, can't be searched by its value. By default this field is shown on index and excerpt pages and hidden only on listings pages. It is possible to set up max length of output, also possible to use cropped content as excerpt, when excerpt field is empty - cropped main content will be used (look at Listings settings tab).

Listings addresses (core field type)

This is a block of listing locations and addresses. Can't be ordered by its value, can't be required, has special search block. This block of fields is controlled by locations manager and listings levels settings.

Listings categories (core field type)

This is a block of categories, those were assigned to listing. Can't be ordered by its value, can't be required, has special search block. This block of fields is controlled by categories manager and listings levels settings.

Listings tags (core field type)

This is a block of tags, those were assigned to listing. Can't be ordered by its value, can't be required.

Text string

Uses to insert short text/string data, for instance, phone number. Can be ordered by its value, can be required, can take part in search. Has own special configuration and search configuration options:

Max length - max number of characters allowed in this field.

PHP RegEx template - this interesting option allows to set the format of field. For example, such RegEx: \(?([1-9]\d{2})(\)?)(-|.|\s)?([1-9]\d{2})(-|.|\s)?(\d{4}) matches phone number format: (xxx) xxx-xxxx

Is phone field? - for mobile devices adds special phone tag when this field is used as phone number.

Search configuration options:

Search input mode - "Search by keywords field" - no additional input field appears on the search form, search through keywords field. Or "Render own search field" option.

Textarea

Uses to insert long text and/or HTML. Listings can't be ordered by this field, but it can take part in the search (as separate search field or through keywords search field). The same search configuration page as for the text string type. Has following configuration options:

Max length - max number of characters allowed in this field.

HTML editor enabled - enable richtext editor.

Run shortcodes - enable to process shortcodes inside this field.

Search configuration options:

Search input mode - "Search by keywords field" - no additional input field appears on the search form, search through keywords field. Or "Render own search field" option.

Digital value

Uses to insert numeric data. Can be ordered by its value, can be required, can take part in search. Has own special configuration options:

Is integer or decimal - choose how to format the value of this field.

Decimal separator - possible values: dot or comma.

Thousands separator - possible values: no separator, dot, comma or space.

Min - you may set minimum bound of this field. Leave empty if you do not need to limit this field.

Max - you may set maximum bound of this field. Leave empty if you do not need to limit this field.

Search configuration options:

Search mode - 4 modes available:

  • enter exact number in search field
  • provide an ability to search using min-max combination of select boxes
  • search range slider with steps from Min-Max options
  • search range slider with step 1, enter exact range

Min-Max options - for 2nd and 3rd search modes. Complete the list of options for select boxes or range slider.

Select list

At the backend displays as selectbox HTML input element. To show this field - first of all on the configuration page admin must complete selection items. Listings can't be ordered by this content field, but can be searched by selected items. On the search form these items will be displayed as a group of checkboxes inputs or selectbox or radio buttons group.

Search input mode - how to display inputs: checkboxes inputs or selectbox or radio buttons group.

Operator for the search - it works only in checkboxes mode. OR - any item present is enough, will find listings with any of selected items. AND - require all items, will find listings will all items, those were selected in the search form.

Items counter - on the search form shows the number of listings per item (in brackets).

Radio buttons

Fields of this type inherit all features and settings of "select list" field type. The only difference is that the backend displays as radio buttons group.

Checkboxes

Fields of this type inherit all features and settings of "select list" field type. The only difference is that the backend displays as checkboxes group of HTML input elements, so it is possible to choose more than one option. + one specific configuration setting:

How to display items - display all items with checked/unchecked marks or only checked items. Example of all items with checked/unchecked marks:

Website URL

At the backend this is combination of 2 HTML inputs: the first input for a URL of link and the second for a text of link. Can't be ordered by its value, can't take part in search. At the frontend looks like a link. Has 5 configuration settings:

Open link in new window - when checked - the system adds target="blank" attribute to the link.

Add nofollow attribute - when checked - the system adds rel="nofollow" attribute to the link.

Enable link text field - whether to use link text: entered by user or default link text (when next option enabled).

Use default link text when empty - use default link text when user did not fill in own link text.

Default link text - default link text is used when user did not fill in own link text.

When no link text available, it was not filled in, it is disabled and default text is not entered or was disabled - whole URL will be displayed as link text.

Email

At the backend displays as pure HTML input element. Can't be ordered by its value, can't take part in search. At the frontend looks like mailto link.

Date-Time

search_calendar_widget

At the backend this field inherits the behaviour of jQuery UI datepicker widget. Has special configuration setting to include time-selection feature.

Can be ordered by its value. Also in the search block this field renders as 2 separate inputs to search by date range.

Price

Fields of this type has very much like behaviour as digital value field type, but it is always decimal and besides "Decimal separator" and "Thousands separator" settings it owns additional configuration settings.

Currency symbol - this symbol will appear on frontend/backend pages.

Currency symbol - choose preferred position of currency symbol/code.

Decimal separator - decimal separator of price value, possible values: dot or comma.

Hide decimals - show/hide decimals (cents) at the frontend.

Thousands separator - the separator for thousands, millions, billions, ... Possible values: no separator, dot, comma or space.

The same special search configuration options as for digital number type: "Search mode" and "Min-Max options list". "Search range slider with steps from Min-Max options" mode on the image below:

Opening hours

The only configuration option is "Time convention" - 12-hours clock or 24-hours clock. Can't be ordered by its value, can't take part in search.

opening_hours

File upload

This field type a bit similar to website type. But instead of filling URL user uploads a file, which then could be downloaded at the frontend.

Enable file title field - whether to use file title: entered by user or default file title text (when next option enabled).

Use default file title text when empty - use default file title text when user did not fill in own file title.

Default file title text - default file title text is used when user did not fill in own file title.

When no file title text available, it was not filled in, it is disabled and default text is not entered or was disabled - real file name will be displayed.

Allowed file types - select file types, those allowed to be uploaded.

Category-specific content fields

It is possible configure additional content fields (except core fields) to display their inputs only when exact specific categories were checked on listings edition page. This is important and powerful feature allows to build category-specific content fields. Also when content field is searchable - it will appear on the search form (directly in search form or under advanced section) when visitor selects specific categories.

For instance: there may be one "price" field configured especially for "Classifieds -> For sale" category. In such case this field appears only in listings, those were assigned with specific category.

Content fields groups

content_fields_groups

This functionality allows to combine separate content fields into groups (including core fields) at the frontend listings single pages. There is an ability to place content fields group on a separate tab on single listing page, also ability to hide content fields group from anonymous users, they will only see the link to login page "You must be logged in to see this info".


Directory listings

Directory listings are very much like standard WordPress posts, except some things and additional features. In wordpress terminology "Directory listings" are posts of custom post type, they store in the database, in wordpress tables with all their meta data. Theoretically they can be used by another 3rd party plugins, in the same way as native WP posts. This gives huge space for compatibility and custom development. Of course, for some 3rd party plugins it requires special adaptation.

Listings creation and management

Creation of new listing begins with choosing of directory and listing level (when there are more than 1 directory and level in the system). This is the first step and it defines functionality and behaviour of newly created listing.

Listings administration page may contain standard WordPress fields and metaboxes such as: title field, richtext editor for listing description, slug and excerpt fields, author metabox, comments metabox. Also, according to the level of current listing, this page contains special metaboxes: listing categories, listing locations, content fields, media metabox with forms for images uploading and YouTube videos embedding, ratings stats, contact email field, claim options metabox.

Each directory listing has special metabox on its administration page:

"Listing Info" metabox have some information fields: directory, chosen listing level, listing status, total clicks, sorting date and expiration date.

listing status is not the same thing as post status, listing status can be "active", "expired" or "unpaid". Post status can be "published", "pending review" or "draft".

administration_listing_row

Listing row on "Directory listings" page and "Listing Info" metabox have "raise up listing" and "renew listing" links. Clicking on level link opens a form to change listing level. Description of these options below:

Raise up listing option

This option displays when current listing is active and listings level of this listing has "Ability to raise up listings" enabled setting.

This feature will raise up a listing to the top of all lists, those ordered by date. After raise up a listing becomes higher than all other listings. Actually when listings are sorted by date - they are sorted by "Sorting date" (look at the screenshot above), an not by creation date. But just after listing creation these dates are the same. Also raise up will be processed just after listing renewal. More information about sorting.

This feature can be payment. Site owner can charge for raise up option a separate from activation price. When payments addon enabled - listings level has "Listings raise up price" setting.

Renew listing option

This option displays when listings level of current listing has not enabled "Eternal active period" setting and current listing is under "expired" status. This feature processes directory listing renewal. After renew process was completed successfully the listing status becomes "active" and the system sets new expiration date. Also this function raises up the listing to the top of all lists, those ordered by date.

This feature can be payment. Renewal price is the price for listing activation. Site admin can build such business model, when after expiration of listing of free level it will be suspended and moved to payment level. There is such setting in listings levels. So it is some kind of trial period, users will have to pay after free period to renew their listings.

Listings upgrade

"Directory Admin -> Listings upgrade" page contains following table with "level-to-level" options:

listings_upgrade

It is possible to disable levels upgrade/downgrade from a certain level. By default all levels enabled for level change. Also after successful upgrade listing may be raised up.

This feature can be payment. Price fields in the table appear when payments addon was enabled. When this service is not free - successful upgrade means when invoice was completed and paid. Before payment a listing would be staying on the old level.

Administrators and editors users roles still can change listings levels.


Search form is divided into 2 sections: "Main search block" and "Advanced search block" (hide/show by "More filters" and "Less filters" links).

Search settings allows to switch on/off particular search fields and functionality. Customization settings allows to configure background color, text color, background opacity and disable overlay (transparent waves) of the search form.

Main search block

This section includes 2 fields and radius slider:

  1. Keywords + Categories - possible to disable search by keywords and categories dropdown menu in the search settings. Also configure categories nesting level. This field has autocomplete functionality, it suggests categories by first entered letters. When visitor enters keyword, the system searches through categories names and gives listings from corresponding categories, also it searches exact matches in listings titles, content and excerpt fields. Clear field to "reset" categories search.
  2. Address + Locations - possible to disable search by address and locations dropdown menu in the search settings. Also configure locations nesting level. This field has autocomplete functionality, it suggests locations by first entered letters and addresses or postal codes from Google Places service. When visitor enters keyword in this field, the system searches through locations names and gives listings from corresponding locations, also it searches exact matches in listings addresses (address line 1, address line 2, zip or postal code). Clear field to "reset" locations search.
  3. Radius slider - is used along with search by address. Visitors can find map markers in the radius of X miles/kilometers from entered address.
    It is required for listings to have map markers on the map to be searchable by radius.

+ Search by content fields when they configured to take part in the search. Not all content fields have an ability to search listings by their values.

Advanced search block

This block is hidden by default and used only for search by content fields.
[webdirectory-search] shortcode can open advanced search section by default by "advanced_open=1" parameter.

The search form on main directory pages (with [webdirectory] shortcode) follows settings from built-in settings panel. But [webdirectory-search] shortcode has a bunch of own parameters. With this shortcode you can configure what to search and how to display on a separate search form. This separate search form can be connected with a map and/or listings by "uID" parameter in shortcode.

Complete list of [webdirectory-search] shortcode parameters you can find here.


Sorting of listings

Each frontend page that displays the list of listings has "Order by" set of links, of course, if it was not disabled in settings. Clicking sorting links allows to change order direction from ascending to descending and vice versa.

By default on the top appear sticky and featured listings only when they are sorted by date, in another case they are sorted exactly by title, rating, additional content fields values, but there is such option "Sticky and featured listings always will be on top" on Pages & Views settings tab. So it is additional tool for business model of the directory site - place listings of sticky or featured levels higher than other listings. Then at the second stage each list sorts by date (here may be useful "raise up listings" feature), except search by radius page. When user searches listings in radius - default sorting is by distance from center point.

Some content fields types, like date-time, number, price, text string types have own setting to allow order by these fields. You may find special sorting settings including "Default order by" setting on Pages & Views settings tab.

When ratings addon enabled - in the "Order by" set of links appears new option to order by listings rating.

Sticky listings have higher priority under featured and other listings.


Google Maps & Marker Icons

Markers Icons depends on the type selected in directory settings, Font Awesome icons and PNG images.

Frontend page may render empty map when there aren't any listings with assigned locations and defined markers. It is possible to disable maps on index or excerpt pages on Maps & Addresses tab of directory settings page.

Here is simple example of how Google map looks with custom marker icons and radius search cycle:

Attention to the left side search panel. Visitors can search listings and view map markers directly on the map plus a list of found listings below search form.

When "Custom markers on google map" level setting is checked - in listings creation/edition page users are able to select custom marker icons.

On the listings creation/edition page there is an option to set marker coordinates (latitude and longitude) manually or by drag & drop of existing marker by mouse.

Clicking "Generate on google map" button processes targeting and compiling of addresses to render markers on the map.

The map on main directory pages (with [webdirectory] shortcode) follows settings from built-in settings panel. But [webdirectory-map] shortcode has a bunch of own parameters. With this shortcode you can configure what to display and how to display on a separate map for you needs. This separate map can be connected with a search form and/or listings by "uID" parameter in shortcode.

Complete list of [webdirectory-map] shortcode parameters you can find here.


Google API keys

Since 22 June 2016 Google requires mandatory Maps API keys for maps created on NEW websites/domains. Otherwise it may cause problems with Google Maps, Geocoding, addition/edition listings locations, autocomplete on addresses fields, search by radius.

google_maps_error

Create browser API key

Create browser API key in new project or in existing one.

create_project2

The next screen allows you set to a name for the browser key, and restrict the usage of the browser key to the provided referrers. If you leave the referrer field empty, then it’s possible for other users to use your key on their domains.

create_api_key2

Set the referrer to *.yourdomain.com/* to cover all pages on your site.

Create server API key

Create server API key in new project or in existing one. Select the same project you used when you created the browser key and click 'Continue'.

To test server API key you can visit debug page and check geolocation response. Debug page is placed on your site by similar URL http://www.yoursite.com/wp-admin/admin.php?page=w2dc_debug

create_project_server

On the next screen set the referrer to the IP address of your server (this is optinal) to restrict the usage of the key. Here you may find IP address of your site.

create_api_key_server

Enter both keys in appropriate settings on Advanced settings tab of the plugin settings page Directory Admin -> Directory Settings

Take special attention to "Accept requests from these HTTP referrers (web sites)" (for browser key) and "Accept requests from these server IP addresses" (for server key) fields. If they will be wrongly filled in - it may cause problems with Google Maps and their functionality. You can try to leave them blank.

When you are using existing project

You have to enable following APIs in the console: Google Maps JavaScript API, Google Static Maps API, Google Places API Web Service, Google Maps Geocoding API and Google Maps Directions API.

enabled_apis

Sometimes it takes some time for keys activation. Also you could try to speed up the process (as some users did) in the following way: disable, delete, re-enable and re-create all your APIs and keys (or, at least, the ones that give you problems), and see if this fixes the issue for you. If you prefer, you could try with API keys from different account instead, but both keys from one project.


Frontend submission & dashboard

These features become available when "Frontend submission & dashboard addon" was enabled.

Create new page with [webdirectory-dashboard] shortcode if you wish your logged in users to manage their listings, invoices and profile on the frontend dashboard page.

"Submit new listing" button appears on front panel, clicking this button - users start the process of listing creation divided in some steps. Note, that the page with [webdirectory-submit] shortcode required.

Pages with [webdirectory-submit] and [webdirectory-dashboard] shortcodes must not have main directory page with [webdirectory] shortcode as parent, must not have child pages, they must be public, not private, not in trash.

The process of listing submission divided in some steps, the number of submission steps varies according to different conditions: log in step may be missed if user was already logged in, payment step either doesn't required for free listings. Choose level page will be skipped when there are only one level. Also it depends on "Hide choose level page" setting.

After successful submission new listing will be created and in case of payment listing user will be redirected to invoice page to select payment gateway. According to "Enable pre-moderation of listings" setting - listing post status will become: Pending Review or Published.

There are some settings for frontend submission addon on General settings tab.


Payments

This option becomes available only when "Payments addon" was enabled. Instead of plugin's payments addon you may use WooCommerce payments system with all its advantages.

Invoices management page appears at the backend. Authors have access only to own invoices, administrators have permissions to manage any invoices. With enabled "Frontend submission & dashboard addon" users may manage invoices at their frontend dashboard page.

Each invoice has one of following statuses: unpaid, pending or paid. Invoice item - is an object to which this invoice belongs to.

There are 5 types of pay services:

  • listings activation - this type of service available for subscription and one time payment. After successful payment the listing status becomes “active” and displays at the frontend.
  • listings renewal - this type of service available for subscription and one time payment. This feature processes directory listing renewal. After renew process was completed successfully the listing status becomes “active” and the system sets new expiration date.
  • listings raise up - this is the service for one time payment. This feature will raise up the listing to the top of all lists, those ordered by date. For more information look at the sorting section.
  • listings upgrade – this is one time payment service. Charge users if they wish to upgrade their simple listings to featured or sticky.
  • listings claim – after successful approval of claim new owner need to pay to renew the listing.

Invoice management page provides whole information about current invoice: the reason of invoice, invoice item, invoice status, author, price, item options, also invoice log - this is the history of actions processed with this invoice. Also taxes information available when taxes functionality was enabled.

Users are allowed to process some actions with invoices, such as print invoice with all assigned information or reset selected gateway. Also there is special action button "Set as paid" only for administrators. This allows to set up invoice status as paid manually and processes further actions. Usually this needed to complete invoices with chosen "Bank transfer" payment gateway.

payment_gateways

Available payment gateways:

  • PayPal - this method for one time payment.
  • PayPal subscription - users may use this method to process automatic recurring payments. Look at additional information below.
  • Stripe - a beautiful, optimized, cross-device, payment form.
  • Bank transfer - this is semi-automatic method of payment. User selects this method, prints invoice, transfers the payment to vendor, then when site administrator will receive payment - he will manually set invoice as paid by special action button "Set as paid".

PayPal Subscriptions

Using this payment gateway directory listings owners do not need to prolong their ads each time they have been expired. They may choose to open subscription and pay automatically by recurring cycle. The only condition is that PayPal accepts only one duration unit - this means that active period of listings for subscription must be only in days, months or years, in other case active period may be rounded. So it is recommended to set active period only in days, only in months or only in years. Examples:

  • advertisement active period 3 days and 2 months - rounded to 2 months
  • advertisement active period 15 days, 2 months and 1 year - rounded to 14 months
  • advertisement active period 30 days and 1 month - rounded to 1 months
  • advertisement active period 30 days - this will not be rounded

Also, please note, that PayPal subscriptions available only for listings, those do not have eternal (unlimited) active period.

Special note: PayPal single payment and PayPal subscriptions require enabled permalinks on WordPress "Settings -> Permalinks" page.

 

After activation of payments module - on directory settings page new tab "Payments" will appear with payments settings.


WooCommerce

Since version 1.13.0 Web 2.0 Directory plugin became compatible with WooCommerce. Let's list some advantages of using WooCommerce with Directory plugin. With WooCommerce payments system you can:

  • manage orders and products on WooCommerce dashboard
  • set up additional payment gateways available as WooCommerce Extensions
  • WooCommerce Subscriptions plugin is supported as well
  • make scheduled sales
  • give users discount coupons
  • manage fees and taxes for listings products
  • build reports of sales
  • give refunds to users
  • realize lots of ideas for your business model with WooCommerce Extensions

Plugin extends WooCommerce product and adds new product type called "Listing single". You can create listings plans in the same way as you add regular WooCommerce products. Please, read WooCommerce documentation on how to manage products and orders.

How to configure

  1. First of all WooCommerce plugin must be installed.
  2. Web 2.0 Directory plugin Payments addon must be disabled in directory plugin settings (if you enabled it before).
  3. Frontend submission addon must be enabled and pages with [webdirectory-submit] and [webdirectory-dashboard] shortcodes exist.
  4. Enable "WooCommerce payments for the directory" setting on Advanced settings tab.
  5. It is required to install 3 WooCommerce pages: my account, checkout and cart (Look at WooCommerce -> System Status -> Tools).

After the first activation of "WooCommerce payments for the directory" setting on Advanced settings tab the plugin will create new WooCommerce products according to existing listings levels. One "Listing single" product for each existing listings level. Look through each product and set up prices.

With "Listing single" product you can set regular, sale prices and the value of raise up price. After that users have to pay WooCommerce orders for listings activation, renewal, raise up and upgrade. Separate order for each action. Also after successful approval of claim new owner need to pay to renew the listing, when "What will be with listing status after successful approval?" setting is set to "expired status" option.


Directory widgets

Web 2.0 Directory plugin provides various types of widgets to display listings, categories, locations items in different views: on the map, in slider, carousel, grid, table, menu. Also special search form and listings levels table widgets.

There are 3 widgets to display especially on WordPress sidebars, such as: Sidebar categories widgets, Sidebar locations widget and Sidebar listings widget.

Others can be displayed in any part of a site. The plugin is fully compatible with WordPress Visual Composer and SiteOrigin page builder plugins. Use directory widgets with enabled custom home page setting.

Widgets settings are quite similar to shortcodes parameters. You can find detailed list of parameters here.


Custom Home Page

By default the order and position of elements of [webdirectory] main shortcode is static: frontpanel buttons, search form, categories list, locations list, google map, listings block. But there is a possibility to set up custom layout.

Two ways to build custom home page:

  1. Using shortcodes with custom_home=1 parameter. When you set up [webdirectory custom_home=1] – the shortcode displays only listings, no map, no categories list, no locations list, no search form. This special mode allows to build custom directory home page as you wish using additional shortcodes:

    [webdirectory-search custom_home=1] - custom search form gives search results into main [webdirectory custom_home=1] element.

    [webdirectory-categories custom_home=1] - categories shortcode renders corresponding categories navigation menu.

    [webdirectory-locations custom_home=1] - locations shortcode renders corresponding locations navigation menu.

    [webdirectory-map custom_home=1] - Google map with markers from listings.

    [webdirectory-breadcrumbs] - displays breadcrumbs in the place of this shortcode. custom_home=1 parameter does not need.

    [webdirectory-buttons] - renders following buttons: Submit new listing, My bookmarks button and buttons on single listing page: Claim listing, Edit listing, Print listing, Add/Remove Bookmark, Save listing in PDF. custom_home=1 parameter does not need.

    [webdirectory-term-title] - displays category, location or tag title in the place of this shortcode. custom_home=1 parameter does not need.

    [webdirectory-term-description] - displays category, location or tag description in the place of this shortcode. custom_home=1 parameter does not need.

  2. The plugin is fully compatible with WordPress Visual Composer and SiteOrigin page builder plugins. Use directory widgets with enabled custom home page setting.

Detailed explanation of all shortcodes here.


Customization styles and templates

The customization of the directory does require some experience in HTML, CSS and even PHP to change the templates around to an arbitrary theme look. Plugin's styles and templates are designed to work relatively well with most themes, but if you do have the need to modify any template and add or remove styles - try to follow these conditions:

  • Create new folder in your child theme "w2dc-plugin/". You will place custom files in this folder.
  • If you want to change the layout or styles of directory section on your site do not modify existing CSS files, instead create new file and give it exactly the same name, just add -custom postfix to the end of name before file's extension. For example, resources/css/frontend.css file from the plugin folder must have following name and placed into w2dc-plugin/resources/css/frontend-custom.css folder of your child theme. Using this method will save your modifications and custom code during further updates.
  • The same convention for any templates - .tpl files in templates/ folder. For example, custom templates/frontend/index.tpl.php template must have following name and placed into w2dc-plugin/templates/frontend/index-custom.tpl.php folder of your child theme.
    Relative path of custom file in your child theme "w2dc-plugin/" folder must be exactly the same as the path of original file. resources/css/ will be w2dc-plugin/resources/css/, templates/frontend/ will be w2dc-plugin/templates/frontend/ and so on.
  • Other part of customization is that you can manage categories icons, locations icons and map markers icons.
  • Inside resources/sass/ folder the plugin contains SASS files for the frontend and backend parts including RTL styles.

The directory has special customization settings to change some elements on frontend pages like links and buttons colors, background of the search form, primary and secondary colors, jQuery UI style.


How to modify texts

If you use WordPress in English and simply want to modify one or some words of the plugin, then follow these steps:

  1. Download and install Poedit.
  2. Open with Poedit languages/W2DC-en_US.po file.
  3. Now you can find and modify any needed words and texts.
  4. Every time you save W2DC-en_US.po file, Poedit automatically generates W2DC-en_US.mo file, which is the one WordPress uses and basically the only one you need to upload to your site.
  5. Upload generated W2DC-en_US.mo file and saved W2DC-en_US.po file to your site into wp-content/languages/plugins/ folder. You can use FTP client or FTP manager of your hosting.

Translation

Web 2.0 Directory plugin is ready for use in any languages. The languages/ folder contains W2DC_en_US.po file, which is used for translations. The process of translation is quite similar to modifying texts with Poedit application. The only difference is that before translation you need to duplicate W2DC-en_US.po file and give a name to new file according to following rules:

  1. duplicate the W2DC.pot file and rename it to W2DC-lang_COUNTRY.po.
  2. Example for the Portuguese Brazil language: W2DC-pt_BR.po
    -- pt_BR means Portuguese Brazil, but many languages don't have a country variation...
    -- you'll have to fill in with your own language
  3. On WordPress Settings -> General page select needed site language.
  4. Every time you save translated W2DC-lang_COUNTRY.po file, PoEdit automatically generates W2DC-lang_COUNTRY.mo file, which is the one WordPress uses and basically the only one you need to upload to your site.
  5. Upload generated W2DC-lang_COUNTRY.mo file and saved W2DC-lang_COUNTRY.po file to your site into wp-content/languages/plugins/ folder. You can use FTP client or FTP manager of your hosting.

CSV Import

We placed sample CSV file in "documentation/" folder in the plugin archive.

  1. On the second step of importing you'll collate CSV headers of columns with existing listings fields, this means there isn't fixed format for CSV files.
  2. The only required columns in CSV file, those will define new listings titles and level IDs. Also information about author must be provided - in any column of CSV file or by setting default author in settings.
  3. In order to assign some categories/locations/tags with each listing - specify existing category/location/tag name, slug or ID in one CSV column and separate them with special delimiter. This delimiter must be any string character, but not the same as the delimiter for separation of CSV columns.
  4. You may set to auto-create new category/subcategory/location/sublocation/tag. In such case, when there isn't any existing category/subcategory/location/sublocation/tag with provided slug - new category/subcategory/location/sublocation/tag will be created automatically.
  5. Example of multiple subcategories import: "Business services > Advertising, Marketing & PR ; Real estate > Properties > Commercial". 2 root categories will be created, if they were not existed before import: "Business services" and "Real estate". And all their subcategories will be created in this hierarchy: "Advertising, Marketing & PR", "Properties" and "Commercial". Locations import works in the same way.
  6. MultiValues - are such fields, those may have more than one value, for example, categories, locations, tags, images, YouTube videos, checkboxes content field items. Separate them in one CSV column with special delimiter in the same way as for assigned categories.
  7. Also you may upload ZIP archive with images files for new listings. Specify names of images files in one CSV column and separate them with special delimiter in the same way as for assigned categories. In order to import images titles - specify them after each image file name by ">" symbol, example: "goldengate_1024x768.jpg>Golden Gate". Note, that images files must be in the root inside ZIP archive, not inside folder.
  8. By default listings authors will be specified in one of CSV columns, there must be existing user ID, user login or user email. Or you can switch to assign all new listings with one specific existing user.
  9. Locations import works in the same way as categories import. Define already existing directory location name, slug or ID or set new locations names. Use ">" symbol for locations-sublocations hierarchy. There are 2 fields for addresses: address line 1 and address line 2. So you can import in 2 ways: predefined locations (countries, states, cities, e.t.c.) in couple with addresses (street, building number, flat, e.t.c.) or only addresses fields with whole address. Also you may set special column for names of existed map icons files: for example, there is such map marker icon file "w2dc/resources/images/map_icons/icons/_new/Boat.png", so you have to place "_new/Boat.png" into CSV column. Using Font Awesome icons just place the name of icon "w2dc-fa-automobile".
  10. When you do not have latitude/longitude information for Google Maps markers - Google geocoding service may be used to build markers points from addresses (CURL extention required), but you can only import maximum of 2500 addresses per day, this is the max query limit of the Google geocoding service, unless you have a Google Maps API business license.
  11. All dates with or without time must be formatted in following way: "dd.mm.yyyy HH:MM" (time is optional)
  12. For YouTube videos specify full video URL or only its ID. You can separate some videos in one CSV column with special delimiter in the same way as for assigned categories.
  13. Opening hours content field import format: "Mon 01:00 AM - 12:59 PM". Days of week: Mon, Tue, Wed, Thu, Fri, Sat, Sun. Separate each day of week by comma. Missing days of week will be set as "closed".
  14. There is an option to configure all imported listings as claimable, this option is shown when frontend submission addon was enabled and also claim functionality was switched on.
  15. When the size of your CSV file is very large - this may slow down the server and break the process of import, you may try to split the file into smaller CSV files.
  16. Recommended to make whole backup of the database before import.

Troubleshooting

Before troubleshooting clear cache of your browser and cache on your site, if any caching system is used.

Most of issues with the directory plugin are caused by wrong configuration in directory settings, so the best solution is to look through directory settings and set up them correctly. Another issues can be easily fixed by following below instructions.

The plugin follows WordPress coding standards and compatible with all themes and plugins, those follow the same standards. But in some cases problems might be caused by a conflict with your theme or another plugin. The very first step to find the reason of this conflict is to test your site with another theme and/or disable all plugins one by one. If you are not able to change your WP theme or disable conflicting plugin, then you can try to find a setting related to current problem, that can fix it.

Problems with directories or listings pages

Exemplary symptoms: 404 errors on pages. Categories, locations or listings pages just refreshes.

This could be caused by missing [webdirectory] shortcode. It is required shortcode. Create a page with this shortcode in the description. This page must not have child pages, it must be public, not private, not in trash.

If you are using some kind of page builder, then make sure it processes shortcodes in the same way as it processes in the native WordPress page description. Some builders have own special modules/elements to place shortcodes. We recommend to use SiteOrigin page builder and WP Bakery Visual Composer.

Special attention to directory slugs. Slugs must contain only alpha-numeric characters, underscores or dashes. All slugs must be unique and different.

Problems with the radius search, maps, address fields autocomplete

The most frequent reason is Google API keys. Please follow instructions on how to generate them and enable needed APIs in Google console.

To test server API key you can visit debug page and check geolocation response. Debug page is placed on your site by similar URL http://www.yoursite.com/wp-admin/admin.php?page=w2dc_debug

Problems with emails sending

Exemplary symptoms: users do not receive login details after first submission. Users do not receive notification emails. Admin does not receive notification emails. Emails go to spam folder.

First of all check if needed notifications templates are filled in and not empty on emails notifications settings tab.

If notifications templates are filled in, but you still have problems with emails sending, this means, that your mail server on your site has wrong configuration. Try to install and configure SMTP plugin like this oneWP Mail SMTP plugin.

I want a separate page for listings. Remove all other texts and elements from listings pages.

Create new page with [webdirectory-listing-page] shortcode to build separate page for single listings. Especially when you are building custom home page, so there will not be any other directory elements like on the home page.

How to remove 'web-2-0-directory' slug from URL?

By default new page with [webdirectory] shortcode has a URL like http://www.yoursite.com/web-2-0-directory/. In order to remove 'web-2-0-directory' part from address - select this page as homepage in WordPress Settings -> Reading settings.

Problems with Facebook sharing

For sharing in Facebook any page must contain some special meta tags in its HTML source code. For correct sharing directory plugin inserts own meta tags on single listings pages. But another plugins (or themes in some cases) can add own meta tags as well. This may cause sharing issues.

Try to find this conflicting plugin and/or a setting to switch off adding meta tags for Facebook. This is the only solution.