Product Support

Directory Tools

Essential for anyone using Participants Database as an online directory, this plugin selectively exposes all your entries to search engines, and adds favorites and star rating widgets.

See the FAQ for instructions on setting up social media sharing and help with search engine indexing.

Product Setup

Proxy Posts

The big thing this add-on does is create something I call “proxy posts.” These are a new WordPress custom post type that mirrors the content in your Participants Database records. With this, nearly anything that you can do with blog posts, you can now do with Participants Database records. That includes social media publishing and sharing, reviews, comments, cross-posting etc… The big advantage for online directories is that now all the directory listings are exposed to search engines and can be indexed and searched like regular WordPress content. It is important to understand that proxy posts are not normally shown to your site visitors, the purpose of the proxy post is to provide searchable content to search engine spiders and general site search. When a proxy post is viewed on the website or indexed by a search engine, what is actually seen is the Participants Database single record display, and this is fully configurable and templatable.

How It Works

When proxy posts are enabled, every time a new Participants Database record is created, a proxy post is created using the information contained in the record. When a record is updated, the information in the associated proxy post is updated too, so these posts will always reflect the current data in the database. You have complete control over what information from the record gets placed into the proxy post, so you can pack lots of findable content into the proxy post while not exposing any private or administrative information you don’t need publicly visible. There is also a way to automatically create proxy posts for all your records, so if you’re coming to this with a database already full of entries, your whole database can be mirrored into proxy posts with a single operation.

Setting Up the Proxy Post Content

In order to provide the proxy post with it’s content, you need to decide which fields from the Participants Database record will be used. These are called Proxy Post Content Sources and it is necessary to set at least a minimum of them in order to create the proxy post. There are several parts to a post, and the plugin gives you control over how each part is filled with content when the proxy post is created or updated. Each part serves a specific purpose in terms of how the entry is seen and indexed by search engines or how the entry is shown in social media shares. These settings give you a way to assign which Participants Database fields will provide the content for each part.

Title – May be the most important in terms of search indexing, it should identify the listing, but should be short. Most search engines limit the length of titles, you won’t want yours to get cut off because it’s too long. Consider only using 1-3 fields here, shooting for a maximum length of 60 characters.

Content – provides the “body” of the listing, you may want to put as much information as possible in here.

Description – provides a short description of the listing, should be limited to 4-6 lines or 320 characters. That would typically be 3-6 fields, depending on what is in them. These are just general guidelines, it’s not enforced in any way.

Featured Image – If you are using the Image Expansion Kit add-on, you can also assign which field provides the featured (or thumbnail) image of the post. Only image fields can be selected for this. Together these configurations should create an accurate representation of what each listing contains.

Setting Up the Post Slug

The “post slug” is probably already familiar to you. That is the unique name that is used to show the post, and it is typically based on the title, but here, you can choose which fields are used to make up the post slug. The post slug will appear in the post URL, so it’s helpful if it is based on the name of the listing. To build the post slug, you have 1, 2 or 3 fields assigned to provide the words for the slug. The way this works is the first 1 or 2 fields are used to make the slug. If it is not unique, then the 3rd term is used. If there is no 3rd term defined or even the three together don’t make a unique slug, a number is added. You must have at least one field defined to make the post slug.

The URL Slug

So, we looked at the post slug, but what is the URL Slug that is at the top of the Proxy Post settings? This is a word that acts as a keyword to name the kind of thing you have in your listings, and also to tell WordPress that the post is one of your Proxy Posts. For example, let’s say your directory is for restaurants. You would probably want to use the word ‘restaurants’ as your URL slug because that is the kind of thing you have in your listings. That would also make sense in the URL…so if you have a restaurant called “Tip Top Lounge” The URL for that listing could then be something like So think about how it will look in the URL because the word in your URL Slug setting will go just before the post slug in the URL. URLs that are readable and descriptive look more professional and authoritative, so it’s important to get it right. Also, this is not something you will want to change later because it will throw all your link rankings off because any reputation you’d built up for the old URLs would be lost.

Putting the Proxy Posts All Together

Now that you’ve got the basic configuration together, it’s time to create your proxy posts. First, make sure you have the “Enable Proxy Posts” enabled. Now click on the “Advanced Proxy Post Settings” tab. One setting you will want to check is the “Approved Records Only” checkbox. Be sure to have that checked if you are controlling the visibility of your Participants Database records with the “approved” field. Now, at the bottom on that tab is the button to create proxy posts for all your records. When you click that, it will load all the records into a queue and begin processing them in the background. When the page refreshes, it will tell you how many records it’s processing. It may only take a few seconds for a thousand records, but if you’ve got a very large number, it could take several minutes. Just check back in from time to time to see if it’s done. When the process is complete, it will give you a report on how many records were created updated, etc. You should use this function whenever you make changes to the proxy post content configuration so that all the records can be updated. If you are making individual edits, you don’t need to do this because the proxy will be updated whenever a record is edited.

Allowing Commenting on Proxy Posts

A proxy post is a way to display a Participants Database record in a core WordPress context. This means that all the things you can do with any WP post, you can do with a Proxy Post, including discussions (commenting).

You must have the plugin configured to show the proxy post (which has its own page generated by WP) instead of the single record display (which is done with a shortcode). The settings to look at are “Enable Proxy Posts” (of course!) and “Use Proxy Posts for Single Record Displays” With those enabled, when someone clock on a PDB record in a list display, they will be taken to the proxy post’s page instead of the single record display. There are actually many ways to set something like this up, but this is the simplest.

Now that your records are getting displayed using the proxy post, you need to enable commenting. In the Directory Tools settings under the advanced poxy post settings tab, you’ll see the “Enable Comments on Proxy Posts” setting…that should be checked. Also, if there are any global WordPress settings that affect comments, you may need to check those too.

Commenting can be enabled/disabled on a per-post basis as well. You will see this if you edit the proxy post directly (see below).

With that set, commenting on each record (via the proxy post) will be enabled. Any other plugins you have installed that affect commenting will be applied if configured to do so by that plugin.

The Proxy Post List

It’s possible to see all your proxy posts: in the Participants Database menu is an item “Proxy Posts.” This is really just for reference because you don’t need to edit them from this page, the proxy post will be updated from the Participants Database record whenever that is edited. If you edited them here, you’d lose any changes you made.

User Favorites

There is another new form element type, “Favorite” that lets your users select records as a favorite, or maybe something similar to a “like” button. The general appearance of the favorites widget is set up under the “Favorite Settings” tab. The number of favorites for each record is saved, so you can use the number of favorites to sort your lists, showing the most-favorited entries at the top. To set up your favorites widget, create a new field on the Manage Database Fields page. Set the form element to “Favorite” and the widget will display in the record according to the location (group and order) of the field. You may have only one favorite widget defined. Along with the favorite widget is the user favorites shortcode, which is used to show the user a list of all their favorites. There are several settings that go along with this shortcode. To show the user a list of their favorites use this shortcode: [[pdb_user_favorites]] which operates essentially as a shortcut to showing a Participants Database list, but only with those records that the currently logged in user has chosen. The shortcode can use the “template” attribute to set the template…for instance to show the user’s favorites as a responsive list, you could use a shortcode like [[pdb_user_favorites template=responsive]] All that does is use the regular responsive template for the pdb_list shortcode, so you can easily use a custom template for that if you want. Further customizations to the shortcode can be added in the settings.

Star Ratings

The Directory Tools add-on creates a new type of form element, “Star Rating” that gives your logged-in users the ability to rate your listings. Under the Star Ratings Settings tab you can configure the general appearance of the star rating widget. To place the widget, you add a form element to Participants Database (on the Manage Database Fields page) so that it will be included in your listings. When you add the form element, give it a name that describes what the rating is for, then set the form element of the field to “Star Rating” You can have multiple star rating fields, so if you wanted to give your users the ability to rate several things separately, you can do that. The way this works, is when a logged-in user views the record detail display, their rating is visible. They can select the “stars” to rate the item any time. When they click, the rating is saved. Each record stores the average rating, so you can easily sort your listings by rating by selecting the rating field as your sort field.

Average Rating Display

When the rating field is displayed, it shows the average for all ratings of the record. This average is normally shown as a set of star icons, but it can be configured to also show a numeric average. This is configured in the rating field definition “attributes.” To show the numeric average, use the average_numeric attribute. The value tells the number of places to use in the numeric average: 1 will show one digit after the decimal point, 2 will show 2, etc. To show only the integer value, set the value to “true” (a 0 will read as false, and prevent the value from showing at all).

To prevent the average rating star icons from appearing, use “average_stars::false.”

User Not Logged In Message

Both the Star Rating and Favorites widgets require the user to be logged in in order to rate or favorite a listing. It is possible to configure a message with a link that will be shown instead of the rating or favorite widget if the user is not logged in. This is configured in the field “attributes” parameter like this example:

login_message::Please %Log In% to rate this.

The % signs show where the login link should be placed. In the example above the phrase “Log In” will be linked to your site’s login page. The redirect will be set so that the user will come back to the listing page after logging in, so they can rate or favorite the listing right away.

The Overall Ratings Field

If you have several ratings fields defined, it might be desirable to have a way to sort and display an “overall rating” that combines all the ratings into a single number for each record. To use the Overall Ratings field, you must create a new field on the Manage Database Fields page. Next, change its form element to “Overall Rating” and then configure it to display like any other field. This field cannot be edited, but it is updated every time a new rating is submitted, so it will always show the current overall rating value.

Product Settings

Proxy Post Settings

Enable Proxy Posts

Check this to use proxy posts. It defaults to unchecked so that you can configure the proxy post content sources before turning it all on.

Use Proxy Posts for Single Record Displays

This changes how the “single record display” or detail page operates with Participants Database. When checked, the detail links usually shown in Participants Database list displays and search results will be changed to point to the proxy post instead of the regular single record display. This means you don’t need a page with the [pdb_single] shortcode on it any more, this is now handled by the proxy post. This is important if you are using third-party plugins to add functionality to your single record display. For example, if you are using Jetpack and have social media sharing enabled, this will add social media sharing buttons to your single record display. Note that you must configure your third-party plugin to add its functionality to Proxy Post custom post types.

URL Slug

This is the generic term used to identify your single listing display in the URL. For example, if your directory is for hotels, you might want to set this to “hotels” so that the URL that shows in individual listing will have /hotels/ in it. This string must be unique to your site because it is used to tell WordPress to show the proxy post for the listing. So, in the example, there must not be a regular page that uses the slug “hotels” because that will confuse things and cause problems.

Content Source Fields

Post Title Source Fields

These are the fields that are used to construct the title of the proxy post. Typically, this will be 1 or 2 fields. It does not have to be unique to each listing, but you probably want it to be.

Post Content Source Fields

These fields are used to put together the content of the proxy post. You can, and probably should, put as many fields in here as you want publicly seen. For some fields, a label is added for clarity. The fields that have labels automatically added are any kind of selection field like dropdowns or radio buttons. This is so you don’t end up with a word in the content where it may not be clear what it is, which might look “spammy” to a search engine. The plugin tries to make the content look like regular content, even though it is constructed of several components. As long as the content seen in the proxy post is similar to the actual displayed content (proxy post content is not displayed directly on your site), you will be good. You can set your own label for other kinds of fields by adding a “label” attribute to the field definition. For example if you have a text field that had the year a business was established, you might want to add a label to that field put putting something like this into the “attributes” parameter of the field definition: label::Established in %s The “%s” will be replaced with the value of the field, so in the proxy post content it would read something like “Established in 1995.”

Post Description Source Fields

Choose several fields to make up the description text for the post. This content is sometimes seen in search engine results ans social media shares. It should be fairly short, the general guideline is 4-6 lines or 320 characters. It should have content that would serve as a brief summary of what the entry is for.

Post Featured Image Field

Proxy posts may have a featured image, and this selector lets you choose which image upload field can be used to provide the featured image. This image is mostly seen in social media posts, and it will often be displayed when the proxy post is viewed on your site. This depends on your theme. This setting is only available if you have the Image Expansion Kit add-on activated, and only single “Image Upload” fields can be used.

Post Slug Source Fields

Each proxy post (like WordPress posts in general) has a unique identifier called a “slug” that is used in the URL to view the post. There are three fields here: the first two are used to build the slug, but if that is not unique, the third term will be used to make the slug. The second term is optional, and if you don’t define a second term, then if the first term does not make a unique identifier, then the third term will be used. This can work out well if there are some listings in your directory that have the same name.

For instance if you have a business listing and the business name is your first term, you have a blank second term and then the third term is the city. For businesses that only have one listing, the slug will be the business name, but if there are several with the same name in different cities, the slug name would be the business name and the city.

Slugs are built by making it all lowercase, stripping out punctuation, then replacing spaces with hyphens so it becomes valid to use in a URL. This is the same process that WordPress usually uses to make the slug from the post title. If all three terms do not make a unique slug, a number will be added to the slug, just as WordPress does. If all the fields are empty, a random number ID will be used as the slug.

First Slug Source

This one must be set, it is the primary word or words used to make the slug.

Second Slug Source

This one is optional, but if defined will be added to the first term to make up the slug.

Auxiliary Slug Source

This is the “tie-breaker” that will be used if the slug built using the first one or two sources is not unique.

Advanced Proxy Post Settings

Approved Records Only

If selected, only records that have been approved will be included in proxy posts. This will prevent unapproved records from getting indexed or found in site searches. Read the Approving Records section of the docs for more info. If you are using record approval, you should keep this checked so unapproved records don’t show up in search results. Note that for search engines, unapproving a record does not immediately remove it from search results.

With this setting set, if a record is approved, a proxy post will be created for that record. If the record is unapproved, the proxy post will be deleted.

Generate OpenGraph Tags

OpenGraph is a standard set of HTML meta tags that is used by Facebook and many other social media sites. It provides the data that the social media site uses to construct it’s shares. For example, if you share a page or post to Facebook, it will show an image, a title, some text, etc. That information comes from the OpenGraph tags in the HTML of the originating post. Enabling this places OpenGraph tags based on the proxy post content in all single proxy post pages. You may want to disable this if you are using another plugin that generates OpenGraph tags so there isn’t a duplication. To check on your OpenGraph tags, you need to view the HTML source of your page. Look at the bottom of the <head> tag. There are also several online tools for checking your meta tags. If you want your content shared to social media, it is very important these tags are included in the page HTML.

Proxy Post Display Configuration

Display Using PDB Shortcode

If this is enabled, when a proxy post is viewed on your site, a [pdb_single] shortcode is used to display the content. In most cases, this is what you want, but you can uncheck this and display the proxy post using its native formatting. If you do choose to show your content using the WP native formatting, you can use the normal WordPress templating system to format the content.

When this is enabled, a [pdb_single] shortcode is used to display the record. By default, the fields shown will be the same fields that are used to create the proxy post content, but you can override that with the settings below.

You must use this setting if you want to display dynamic content (such as Participant Logs) with a Proxy Post.

Note that the WP template for displaying the proxy post is always active, so for the general layout of the page, that template determines how that works. The difference is, with this option checked, the “content” part of the post is replaced with the single record display for the record.

For more information about using WordPress custom post type templates to control the layout of proxy post pages, check this article:  Custom Post Type Template Files

Show Content Fields Only With Shortcode

With this setting, only fields that are configured in the “Post Content Source Fields” setting will be displayed. With this unchecked, all public fields will be displayed. This only applies if the “Display Using PDB Shortcode” setting is enabled.

If you want to determine which fields are shown independent of the “Post Content Source Fields” setting, uncheck this setting, and use the “Single Record Shortcode Extra Attributes” setting to control which fields or groups are displayed on the proxy post page.

The default is to have this option checked, and in most cases, that is how you should do it.

Enable Comments on Proxy Posts

This setting allows you to globally enable comments on all Proxy Posts. If you want your users to be able to leave comments on your listings, you can use this setting to turn that on for all proxy posts. Note that you will not be able to turn commenting off for individual listings if you use this setting.

With this setting unchecked, commenting will be off by default, but you can enable comments on individual proxy posts using the Proxy Posts page in the Participants Database admin menu. To enable commenting on a per-listing basis, select the proxy posts you want to allow commenting on, then do a “mass edit” on those items, enabling comments by checking “allow comments.”

Single Record Shortcode Extra Attributes

When proxy posts are using the [pdb_single] shortcode to show its content, you can use this setting to add attributes to the shortcode. You should enter the attributes in the same format you would when setting up the shortcode directly…but without the shortcode name and brackets. For example, if you wanted to use a different template and only show certain groups of fields, the normal shortcode for that could be something like: [pdb_single template=bootstrap groups="main,address"] To set that up for the proxy post display, you just need to put the attributes in the setting, like this: template=bootstrap groups="main,address"

Record List Shortcode Extra Attributes

This is just like the above setting, only for the context of a proxy post archive page or search result. You will likely want to show only a small set of fields here so the list won’t take up a huge amount of vertical space. For example: fields="address,phone,email,website"

Create or Update Proxy Posts for All Records

This button initiates a full scan of all your Participants Database records and creates or updates the proxy post for each one. You must have the minimum content configured for this to be available, so if the button is missing, set up the proxy post content source fields first. When you start the process, it will tell you how many records it’s going to process…this will be all your records. After a minute or more (depending on the size of your database and how much work needs to be done) you can refresh the page and when the process is complete, it will give you a simple report on what it did:

  • created – there was no proxy post for the record so it had to be created
  • updated – the proxy post needed to be updated because the content or the configuration changed
  • skipped – there weren’t any changes to update in the proxy post
  • deleted – the record was not approved, but there was a proxy post for it, so it was deleted

This operation should be performed just after first configuring the plugin, and then any time there are changes to the proxy post content configuration so that everything will be brought into sync. You don’t need to do this if you are editing records or importing a CSV, this happens automatically in those cases.

Star Ratings Settings

Star Icon

Select the icon to use for the star rating widget.

Star Color

Sets the color of the icons and ratings count.

Average Rating Label

When the average rating is shown, use this label. Blank it out for no label at all.

User Rating Label

When the user is shown their rating, use this label for the value.

Favorite Settings

Favorite Icon

Select the icon to use for the favorite widget.

Favorite Icon Color

Icon color to use for the widget.

Show Total Favorites

When enabled, the total count of favorites for the record is shown.

Total Favorites Label

When the total favorites value is shown, use this label.

User Favorite Label

When the user is shown their favorite status for the record, label the value with this.

Favorites Shortcode

No Favorites Message

When the user views their list of favorites, but they haven’t favorited any entries yet, this message is shown.

User Not Logged In Message

If the user views the user favorites list, but is not logged in, this message is shown. The words between the %s tokens will have a link to the login page. This link will return them to the user favorites list once they log in. Leave the tokens out if you don’t want the link.

User Favorites Shortcode Extra Attributes

The user favorites shortcode is just a wrapper for the Participants Database list shortcode, so you can customize it in the same way. If you want to add any additional attributes to the list shortcode, you can do that here. For example to make sure unapproved records are not shown, you could use a setting like this: filter="approved=yes"


How can I see if search engines are indexing my Participants Database entries?

For anyone interested in optimizing their site’s visibility on the web, an account with Google Search Console is essential. This service offers many tools for monitoring and correcting problems with your site’s Google search results. There is a similar service offered for Bing: Bing Webmaster Tools.

To see if your directory entries are getting indexed and what the Google spider is seeing, log in to Google Search Console and go to Index/Coverage. On that page, you’ll see if there are problems with indexing, and also how many pages have been indexed. If you drill down, you can even see how each individual listing is indexed.

If you are experiencing problems with the indexing, this service will help you fix them.

How can I add my listings to the sitemap?

Doing this requires a third-party plugin such as Jetpack or Google XML Sitemaps. There are several others, of course, but they all work in pretty much the same way.

When you set up the sitemap plugin, it is very important you include the proxy-post custom post type. In most cases you will have to do this in the settings somewhere, it won’t happen automatically. It does happen automatically with Jetpack because there aren’t any settings for adding custom post types, so the Directory Tools plugin does that for you.

In Jetpack, you’ll find the sitemaps setting under Traffic/Sitemaps is really just on on/off switch.

To see the sitemap, just click on the sitemap link provided by the plugin.

Once you have your sitemap set up, submit it in the Bing webmaster tools or Google search console. That will provide you with feedback about the sitemap such as if there are problems. Submitting the sitemap is not necessary: search engines will look for the sitemap anyway, but doing it in the console give you positive feedback that it is there and working.


How do I set up social media sharing like share buttons?

This will be provided by a third-party plugin…there are lots to choose from, but it must be able to support adding a share button to a custom post type so you can include the proxy-post custom post type. Once the button is visible on the proxy post’s page, that’s all you need to do. It is possible to take it to the next level by making sure the meta tags are in place and working.

Directory Tools can place meta tags for you, but first check with your social media share plugin to see if that will provide the meta tags. You don’t want to have two sets of competing tags on your page! That is very important, it looks spammy if you duplicate the tags.

You can check your meta tags in Facebook’s meta tag debugger, and there are many others. Be careful on sites that are trying to sell you “SEO” services. There is a lot of noise and snake oil in that industry, so be skeptical of the claims you will see. It is possible to optimize the search engine profile of your site, but be wary of paid services for things you can get for free or inexpensively from a good SEO plugin.

You can also (and you should!) check your meta tags yourself by simply inspecting the HTML source of your page using your Browser Developers Tools. The will usually be at the bottom of the head tag on the page.

How do I enable Comments on Participants Database records?

To enable comments on single Participants Database records, you must be using both of the “Use Proxy Posts for Single Record Displays” and “Display Using PDB Shortcode” settings. When those settings are checked, the single record link (also known as a “detail” link) on the Participants Database list display will go to a proxy post page instead of the single record page.

The proxy post page will show the content of the single record shortcode (as configured in the “Proxy Post Display Configuration” settings), but in the context of a WordPress post, which means that any functionality that is added to the “proxy-post” post type will be active on that page. This include comments.

You will need to take one further step, however, because a particular proxy post won’t show comments by default. You need to enable comments for the posts by visiting the “Proxy Posts” page in the plugin settings and enabling comments for the post. You can use the “bulk edit” functionality to enable comments on multiple proxy posts.

The comments functionality is the core “Discussion” functiuonality proivided by WordPress, so it will follow the configuration set in the “Discussion” settings for your site.

I need to change the "slug" or name of proxy posts.

The proxy post’s slug determines the permalink to the proxy post.

Once a proxy post is created, the slug cannot be changed by editing the Participants Database record. All the other proxy post content will be updated with your changes, but the slug will not. This is because once a proxy post has an established permalink changing the slug could affect it’s search engine response and possibly destroy any search engine rank it may have earned. If this doesn’t matter, then no worries, go ahead and change it, all links to the proxy post will be updated.

You have 3 options for changing the proxy post slug, depending on what you want to do.

To change the slug of an individual proxy post to anything you want: Open the “Proxy Posts” page in the Participants Database admin menu. Use the “quick edit” link to change the Slug.

Re-generate the slugs for a few proxy posts: Open the “Proxy Posts” page, select the posts you want to regenerate and use the bulk actions to delete them. Then use the “proxy Post all Records” button to regenerate the proxy posts.

Re-generate all the proxy post slugs: use the instructions below to delete all the proxy posts and start over.

Is it possible to start over and regenerate all the proxy posts?

Yes, we do this by deleting them all, then using the “Proxy Post all Records” button to regenerate the proxy posts.

Be careful about this if the proxy posts have been active on your site for a while, especially if you’re allowing comments. Comments made to a proxy post will be lost if the proxy post is deleted. If the proxy post has gained any search engine rank, that will also be lost if the slug changes.

The plugin has a method for deleting all the proxy posts, you should use this method to get a clean wipe of all the proxy posts and associated data.

To delete all the proxy posts, go the the Directory Tools settings page in the admin. In your browser location bar, add “&delete_all_pdbdt_proxy_posts” to the url, so it looks something like this:

Hit “enter” and the plugin will delete all the proxy posts. Click on the “Directory Tools” item in the admin menu to clear the “delete_all_pdbdt_proxy_posts” from the URL, so you won’t keep deleting them.

If you’re going to change the fields that are used to generate the proxy post slug, make those changes now.

Go to the advanced tab and click on the “Proxy Post all Records” button. In a minute or so, all the proxy posts will be re-created.

Support Discussions for Directory Tools

  • I seem to have a problem with my Post Title Source Fields, for example on this page

    Where the title is:

    null_select, Similan Islands Blue Dolphin Thailand Liveaboard Diving Review

    I have tried emptying the Post Title Source Fields completely, saving it and I updated this Participant and I get left with “null_select, Similan Islands” as the post title. I am not sure where the null_select is from, but my suspicion is the “second_country” field, which is where “Similan Islands” is from.

    I also think this because the field “second_country”, was originally in the Post Title Source Fields, but no longer shows up in the list of selectable fields, even when this is completely empty, and it’s not selected anywhere else, for example: It does show up in the Post Description Source Fields as selectable, but is not selected.

    So somehow the Post Title Source Fields has become corrupted, and I don’t know how to clear the problem. I thought of doing this via the SQL database, but not sure where to look for the problem.

    I was probably because I changed the “no selected” of the “second_country” field, so I imagine this is stuck somewhere in the database.

    I have done a “repair” and “optimise” of the complete WordPress database.

    Please help.

    • Forget the above question, I have manage to solve the problem. FYI, what I had done is to change the “second_country” field to a Multi Select Checkbox from Radio Fields, which had a null selected option, and it was this that had screwed everything up.
      I have changed it back to Radio buttons and this has sorted the problem, although I am having to go through all records to re-select the correct field on the “second_country” field, which is a pain, but I know its my fault.

  • I bought this plugin with the primary purpose of allowing users to rate listings in my directory. If I’m understanding the documentation correctly, it seems that I also have to buy the participant login plugin to actually have the stars ratings ( Is that correct?

    • Users need to be logged in as a WordPress user to interact with the ratings. There’s no way to track the ratings for users that are not logged in.

      You won’t need the Participant Login plugin, that is for a different purpose: providing a login so people can edit their Participants Database record, it’s not a WP login.

  • I’ve added Directory Tools to my site for the review capabilities. I can get the stars to show on a specific entry, but even if I’m logged in, it doesn’t give me the option to mark the stars. I’m wondering if this has to do with the fact that I have comments turned off, so I turned them on and then turned them on for the single post page, but do I need to rebuild all the proxy posts for it to work?

    • Hi Bonnie,

      The ratings stars field does not depend on Proxy Posts. If the “Your Rating” rating stars can’t be selected while you’re logged in, this indicates a problem with javascript on your page. You need to open the Browser Tools and check the “Console” tab and then open the page. If there are javascript errors, those must be addressed before the functionality will work. This can be cause by another plugin misbehaving, or if you’re using a optimizer plugin, the javascript optimization is breaking it. Either turn javascript optimization off, or you can fix it in the configuration for the javascript optmization.

  • Under the “Post Slug Source Fields” I have used all three slug elements, however the “Second Slug Source” is not only picking up the content of that field, but it also picks up the field name too. any ideas why this may happen?

    Also, on the “Manage Database Fields” page, one of the field groups is picking up the name rather than the title as the tab name – do you know why this has happened? Or how to change this. I have tried to force it by amending the name and changing it back again, but this doesn’t help. Importantly, the heading on the Proxy Post is picking up the title correctly.

    • What kind of field is the slug source? Some fields get the field title added (to give the value a context) when it is used in content, but that shouldn’t happen for building a slug.

      As to the tab name, what exactly do you have as your title for the group?

      • The field is a Radio Buttons field. If it is the type of field that is causing this, what do you suggest I change this to so that only one can be selected.

        Also, if I change it to another field type, will it retain the selections already made so far?
        Also, if at a later date I have to do a “Proxy Post All Records” after it is changed, will this change the post slug of existing Proxy Posts?

        It looks like it is the length of the name in the name of the group – what is the field length limit on this, as I’ve now shortened it and it’s ok?

        • It should be possible to use a radio button field or any other selector field, but honestly, I never tested this case, so I have something to fix there.

          Post slugs are not changed once they are established. If a proxy post is deleted, when it gets re-made, it will use the current configuration to build the slug.

          “Proxy Post All” will only create new slugs when it creates a new proxy post, it won’t change the slug of an existing post.

          The title length for the field group tabs is 30 characters. That is the only place that limit applies, and it is purely to prevent overly-large tabs from making the interface hard to use.

          If you need to add more information to a group, the “description” gives you basically unlimited space for additional text that is attached to the group.

  • I wanted to update one field on the database, but to make it easier I included two fields in the CSV, which was the field I wanted updating and the id.

    I first backed up my website and database first before doing the import.

    When I imported, I selected “Update matching record with new data”.

    I then ran the “Proxy Post All Records”.

    What happened was that all the Proxy Posts were deleted – the records were still all there in the database, but not the Proxy Posts.

    The only way I could retrieve them was to open every record and update each one individually using the “Apply” button.

    Any ideas what when wrong here – would it have been better to include the Proxy Post Id in the import?

    • Thanks for the report, I see that there is a problem with proxy posts getting deleted on CSV import when using the “Approved Records Only” setting. With that setting, proxy posts are deleted if the record is unapproved, but obviously, this is not working as intended. It should only do that if the importing data unapproves the record, should not do that at all if the approval field is not included in the import.

      You can rebuild all your proxy posts by using “proxy post all” no need to do it individually.

      Also, there is (normally) no need to run “proxy post all” after a CSV import. Each proxy post is updated as its record is imported.

      Proxy posts cannot be included in the CSV import, they are not PDB data.

      I will issue an update soon that fixes the problem.

      • Hi Rowland – FYI – I tried to “Proxy post all” but this didn’t work, which is why I had to update each one individually using the “Apply” button, which obviously took a bit of time. So not sure why this isn’t working.

        I see there has been an update to the plugin, which I have updated…was this the fix to this problem?

        Finally, you say “Proxy posts cannot be included in the CSV import, they are not PDB data.” I don’t understand what you mean by this, as I don’t think this is what I was doing. It was the proxy posts that were affected by the import I had done, which was to import fields into the database where the proxy posts are built from.

        • yes, I fixed the issue with proxy posts getting deleted when importing a CSV. This had to do with the way it handles the approval status of records that were getting updated by the import.

          the other comment was me misunderstanding your question. You can include the proxy post ID in the CSV but it is not needed.

        • The Proxy Posts are no longer deleted when I import, but what happened this time is they were relisted on the Proxy Post pages. Is am using the “Record ID” for context and one other field, which is the field I wanted to update.

          Why would it re-list them when I run an import?

        • Bump this, as I think you missed my question:

          The Proxy Posts are no longer deleted when I import, but what happened this time is they were relisted on the Proxy Post pages. Is am using the “Record ID” for context and one other field, which is the field I wanted to update.

          Why would it re-list them when I run an import?

        • What do you mean by “re-list”? What exactly are you seeing?

        • The posts were in a certain order before I imported, and afterwards they were in a completely new order. Before the import they appeared to be in the order they were added, and new posts added since are at the end. I can’t quite workout the new order now, but it would be interesting to know what the database does or should do after an import.

        • Hi Rowland – ok I’ve worked it out. After an import it re-lists them in the order set on the “List Participants”, which in my case was in country order – I think this is right.

  • Hi Rowland,

    I’ve transferred my follow up question on “Proxy Post All Records” – I was a bit worried about pressing this button, but it’s ok to do this and it will only update what’s been updated and it won’t change the slug and although I don’t have comments yet, it will be useful to know in the future that doing this will not affect comments either.
    Now re-reading the section on this, it looks like what you are saying is if you use the “Proxy Post All Records” in connection with deleting Proxy Posts, this is when the slug may be updated or comments are deleted, thank you

    • It is important to understand that when using “Proxy Post All Records” the slug will be changed if the data that is used to build the slug is changed. For this reason, it is best to use data from the record that won’t be changed to build the slug.

  • Hi Rowland, with the Participants Posts is there a setting I need to check to make sure these are found on Google, as non of them are being found so far.

    For example, the summary post I created with the list of posts in a table, which are 12 Participant posts, is already being found on page 2 of Google after only one day, which is for each heading on each of the Proxy Posts I search for on Google, but the individual proxy posts are not found and these have been up for a couple of weeks or more.

    I appreciate that Google takes time to find articles, but these are quite specific terms, and if the summary page is being found, I would have though the proxy posts themselves would also be found too.

    Do you have examples of where these proxy post pages are being found on Google please?

    Cheers, Russell

    • I am not an expert on how Google spiders and indexes pages, so I can’t go into a lot of detail here. Whether the spider finds a post or not really depends on the structure of your site, the content you want indexed has to be findable. If this is important to you, I recommend you open a Google Search Central account and register your site and its sitemap. That will give you a way to not only see exactly what has been indexed but also address issues with indexing your site.

    • Hi Rowland, thank you for your answer, but I was kind of hoping for a better answer really.

      What I am trying to establish, and I would have thought you may know as you built the “Proxy Posts” concept, is whether Google may look at how your ‘posts’ are constructed vs how a WordPress post is constructed.

      I don’t know if Google sees your type of posts differently to a “normal” post.

      I tried searching on “Proxy Posts” as a type of post and there’s not much out there.

      On your sales page for the Directory Tools plug-in you say this “ this plugin selectively exposes all your entries to search engines” and you also say this “ The big advantage for online directories is that now all the directory listings are exposed to search engines and can be indexed and searched like regular WordPress content”

      This was my reason for buying it, so if you are saying you’re not too sure if Proxy Posts are found, this may be a problem.

      Have you tested this at all yourself, or do you have other users who have found that these posts are being found?

      It maybe I give it a bit more time, but my concerns is that I don’t spend too much more time building these types of posts if they will never rank in a similar way to a normal WordPress post.

      Thank you, Russell

      • What I’m saying is they may or may not be found according to how your site is set up. Typically, it works out of the box, however, it is up to you to make sure they can be spidered, the plugin can’t do that for you.

        As far as Google or any other search engine is concerned a Proxy Post is just another WP post, like a blog post or a content page. This is something I created for this purpose, so you won’t find anything about it outside of my documentation. Proxy Posts are an implementation of WordPress Custom Post Types, so if you’re interested in getting background on that, that’s how you’d look it up.

        A really important part of taking control over this is using a site map, which is a way to ensure that content (like proxy posts) is indexed. When you set up your sitemap (and there are several plugins that do this for you) you will need to configure it so that Proxy Posts are included. This is not necessary to get them spidered, but it is insurance that the posts will be spidered.

        As to what the spider will see, that is configured in the Directory Tools plugin settings, “Content Source Fields” settings. This makes it possible to control which parts of the PDB record are public and which are not.

        Using the Search Central account, you can see exactly what Google is seeing.

        I can confirm that all of this is tested and working. The problem I have as a developer is there there are a million ways to configure a WP site, not all of them will result in a working setup, so at least some of the responsibility for getting things working is on the person setting up the site.

      • Hello Rowland,

        A few points to comment on this.

        You say this “it’s up to you to make sure they can be spidered” I don’t know what to change when my other blog posts and blog pages are being found without having to do anything other than publish them.

        Firstly, my WordPress site is set up to be found by Google, as already mentioned the normal blog post I created to summarise the first set of Proxy Posts is already being found 2 days after I published it, so yes my WordPress site is set up to be spidered and is working, just not for proxy posts.

        I have a sitemap on the site too.

        So I think what might help is some guidance or instructions to come with the plug-in along these lines:

        – if you want your Proxy Posts to rank on Google, you need to do X, Y and Z.
        – If you already have a sitemap, you need to do the following in order for this to include Proxy Posts.

        I know you’ve said it should work out of the box, but it’s not and my “normal” blog posts are being found on Google right away, and sometimes quite quickly (I.e. within days) but the proxy posts are not even after several weeks, so there’s clearly something wrong.

        I don’t know how your proxy posts are programmed behind the scenes and how to fix this, as I’m not a programmer.

        Is it possible to change the proxy posts to show and normal blog posts for example?

        Thank you for your help, Russell

        • There are two ways that a search engine is going to find your proxy posts: there is a public link to the post, or it is in your sitemap (with a public URL to the post). Proxy Posts are not different from other posts: as long as there is going to be a public link to the post, publishing it is all you need to do. An example of a public link to a proxy post is a page that lists your PDB records where each item has a link to the proxy post. (you need to have the “Use Proxy Posts for Single Record Displays” setting enabled for links to the posts to be shown in the PDB list display)

          WP blog posts can show up quickly because they are added to the sitemap by default. Proxy Posts will not be added by default, but you can configure them to do so.

          To add proxy posts to the sitemap, you need to go to the sitemap settings, find where it lets you select which custom post types to enable, and enable Proxy Posts. For example:

          shows enabling proxy posts in the sitemap settings

          Once that’s done, the Proxy Post content will be indexed the next time the sitemap is scanned. Your Search Central account is where you can see when the site was last scanned or spidered (those are two different things) and also confirm what was indexed.

        • Hi Rowland,

          Just to confirm, I have now updated the sitemap as you suggest, and although they seem to update slower than regular posts, the proxy posts are now being founds on Google search, in case anyone else reads this and is wondering.

          Thank you for your help and support!!

        • Thanks for confirming. You may find in your sitemap settings a place to set the frequency of updates, this may have an effect on how quickly new posts get indexed.

  • Hello Rowland,

    On the summary page of all Proxy Posts, which is the http://www.domain/URL Slug, the heading is “Proxy Posts” and after this it says “Presents a Participants Database record as a WP post”

    Is there a way to amend these please?

    • If I understand your question, you are looking at the WordPress catalog (also known as “archive”) page for the Proxy Post post type. The content of this page is generated by WordPress, so if you want to change how it appears, you will need to use standard WordPress methods for modifying how the catalog page is displayed. This is not a function of the plugin, the plugin doesn’t attempt to set this page up with the assumption that you will be using the [pdb_list] shortcode to display a list of records.

      • Hi – coming back to this question – where in your code can I find the words “Presents a Participants Database record as a WP post”, as this is a setting you’ve put in somewhere so I can change this please.

        Also, a similar question is do I find where it pulls in the heading Proxy Posts so I can attempt to change this too, thank you.

        • I don’t recommend making changes to the plugin code. You will lose your changes whenever the plugin is updated.

          The first string is in the description parameter of the custom post type in CPT.php. The second is the title of the Custom Post Type in the same file. These you can change by setting up a custom translation file…take a look at this article that explains how: Changing the Labels or Names in Participants Database it will be slightly different because it’s a different plugin, but the way it works is exactly the same.

        • I have installed Poedit and downloaded the file participants-database-en_GB.po, as my language is English UK (Which is what it is set as under general settings in WP). The file I have downloaded is under public_html/wp-content/plugins/participants-database/languages (is this the correct one?)
          When I open this file – to change “Proxy Posts” to something else and to change “Presents a Participants Database record as a WP post” do I add these to the “Source text” and then translate these, or do I need to create a completely new file and upload this?

        • You will be creating a new translation file using the translation template (pdb-directory-tools.pot) provided by the plugin. Poedit will guide you through that, just select create new translation from template. The resulting file should be saved in the same directory as the the translation template file.

        • Two further questions please:

          – wp-content/languages/participants-database/ does not exist, as the only sub directories of languages are /plugins and /themes. Should I create this new directory – i.e. /participants-database?
          – Does it matter what the new file is called so long as it as the en_GB at the end of the name?

        • Yes, create the directory if it doesn’t exist.

          The name is critical for it to work. For your language setting, it should be pdb-directory-tools-en_GB.po Poedit will create the binary companion file which must also be in that directory.

        • OK, I found out where your custom plugin language files go. The directory should be:


          Create it if necessary. The filename must include the name of the plugin, as I mentioned before.

        • Hi Rowland – Brilliant this worked perfectly, thank you!!

  • Hi Rowland,

    I have a page set up with this expression you gave me before: [pdb_list search=true sort=true display_count=true list_limit=10 orderby="last_name,first_name" order="asc,asc" filter="approved=no"]

    – On the Manage List Columns page, which field do I use to include a link to the page created using the Directory Tool and do I need to adjust the above code to account for this.
    – Can tables on a page become scrollable, because if you add too many columns (or fields) the post looks odd.
    – Is there another way of pulling out the information from the database to show tables so that on some pages it shows one set of columns, and on another page it shows another set of columns, for example:

    Field 1 = Name
    Field 2 = Age
    Field 3 = Address
    Field 4 = Type of car they own
    Field 5 = Type of house they own
    Field 6 = Hobby
    Field 7 = Pet they own

    On one page I might want to list: Name, age and pet they own.
    On another page I might want to list: Name, age and type of car they own.
    On another page I might want to show: the Name of all those who have a hobby of say knitting who own dogs.

    The choices are almost endless, but I wanted to know how flexible this is, and how best to approach the problem.

    If under the “Public List Column Setup” I added more columns than can be shown on a page, but then use the above type of code to show the fields I choose along the list of what I’ve explained above.

    Thank you, Russell

    • You can control which columns are shown in the shortcode. Check the documentation here: Using the List Shortcode

      • I have tried this for example:

        [pdb_list search=true sort=true display_count=true list_limit=10 orderby="last_name,first_name" order="asc,asc" filter="approved=yes" "country=Philippines"]

        Or tried this:

        [pdb_list search=true sort=true display_count=true list_limit=10 orderby="last_name,first_name" order="asc,asc" filter="approved=yes" filter="country=philippines"]

        I’m trying to add a second filter in addition to “approved” which in this case is records with “philippines” in the record, but I don’t know the correct syntax – please help, as neither of the above two options work

  • Hi Rowland,

    Is there a way to include a video in any of the fields please from Youtube?

    Thank you, Russell

Got a Support Question?

Your email address will not be published. Required fields are marked *

Would you like to be notified of followup comments via e-mail? You can also subscribe without commenting.