Posts Table with Search & Sort


Posts Table with Search & Sort provides an easy way to list all of your site’s posts in a searchable and sortable data table. Simply add the shortcode [posts_data_table] to any page or widget.

It uses the jQuery DataTables plugin to provide the searching and sorting features, as well as pagination and responsive layouts for smaller screens.

Posts Table Pro – includes many more features, including:

  • Display any custom post type (e.g. courses, products, staff, music, books, etc).
  • Featured images with lightbox.
  • Dropdown filters for taxonomies, categories, and tags.
  • Select posts by custom field, term, date, ID, and more.
  • Advanced Custom Fields support.

WooCommerce Product Table – create tables of products from your WooCommerce store:

  • Include Add to Cart buttons, quantity, price, reviews, stock level, categories, tags, weight, dimensions, and more.

Translations currently provided for French, Spanish, German and Greek. It’s WPML compatible, so if you’re using WPML posts will be shown for the current language only.

There are a number of options available with the shortcode:

  • columns – the columns you’d like to show in your table. This can be any of the following (comma-separated): id, title, content, category, tags, author, and date. Defaults to ‘title,content,date,author,category’
  • rows_per_page – the number of posts to show on each page of results. Set to ‘false’ to disable pagination. Defaults to 20 rows per page.
  • category – restrict the table to this category only. Use the category ID or ‘slug’ here, NOT the name of the category. You can find the slug in the Posts -> Categories menu.
  • tag – restrict the table to this tag only. Use the tag ‘slug’ or ID here. You can find the slug in the Posts -> Tags menu.
  • author – restrict the posts in the table to the specified author. Use can use author name (user_nicename), author ID or a comma-separated list of IDs.
  • post_status – display posts with this post status (draft, pending, publish, future, private or any). Defaults to ‘publish’.
  • sort_by – the column to sort by. Defaults to ‘date’. If the column you want to sort by isn’t shown in the table, it will be added as a hidden column.
    This means, for example, that you can sort by date without actually showing the date column.
  • sort_order – whether to sort ascending (‘asc’) or descending (‘desc’). If you order by date, it will default to ‘desc’ (newest posts first).
  • search_on_click – whether to enable automatic searching for categories and authors when clicking on links in the table. Default: true
  • wrap – whether the table content wraps onto more than one line. Set to ‘false’ to keep everything on one line or ‘true’ to allow the content to wrap. Default: true
  • content_length – the number of words of post content to show in the table (if you’ve included the ‘content’ column). Defaults to 15 words.
  • scroll_offset – advanced: the table scrolls back to the top each time you navigate forward or backwards through the list of posts. This value controls the ‘offset’ for the scroll. For example, if your site uses a sticky header you can adjust the scroll amount here to compensate. Enter a whole number (e.g. 50) or set to ‘false’ to disable scrolling to top.


The following will list your posts in a table with 3 columns (title, content and date columns) showing the first 10 words of each post in the content column:

[posts_data_table columns='title,content,date' content_length="10"]

The following will list posts with 4 columns (ID, title, tags, and author columns), and will be sorted by date in ascending order (oldest posts first):

[posts_data_table columns='id,title,tags,author' sort_by="date" sort_order="asc"]


Please see the demo for examples of the plugin in action.


  • Posts sorted by date and with wrapping disabled. Categories are collapsed automatically to fit data on single line.
  • Different column order and with wrapping enabled (default).
  • Filtered by post author and sorted alphabetically by title (ascending).


  1. Upload the plugin files to the /wp-content/plugins/posts-data-table directory, or install the plugin through the WordPress plugins screen directly.
  2. Activate the plugin through the ‘Plugins’ screen in WordPress
  3. Add the shortcode [posts_data_table] to any page


Installation Instructions
  1. Upload the plugin files to the /wp-content/plugins/posts-data-table directory, or install the plugin through the WordPress plugins screen directly.
  2. Activate the plugin through the ‘Plugins’ screen in WordPress
  3. Add the shortcode [posts_data_table] to any page
How do I display the posts table?

Simply add the shortcode [posts_data_table] to any page.

Does it show all posts or can I restrict it to a certain category?

By default it will list all of your posts, but you can use the ‘category’ option in the shortcode to restrict the table to that category only.

What are the shortcode options?

See the main plugin description for the list of options.

Can I see a demo of the plugin?

Yes, please visit to see the posts table in action.

Will the posts table work with my theme?

The plugin has been designed to work with different WordPress themes and will take the styling from your theme for the fonts etc. where possible.

Does the posts table work with custom post types?

No, it only displays standard Posts at the moment. Our Pro Version supports custom post types, as well as taxonomies, custom fields, and much more.

Can I change the width of the columns?

The column widths are calculated automatically by the plugin, based on the contents of each column. However you can override this for one (or more) columns by setting an exact width. You would need to add some code to your theme (or in a custom plugin) to do this. The filter to hook into is ‘posts_data_table_column_default’. Here’s an example setting the title column to 80px;

add_filter( 'posts_data_table_column_defaults', 'pdt_change_posts_table_defaults' );

function change_posts_table_defaults( $column_defaults ) {
    $column_defaults['title']['width'] = '80px';
    return $column_defaults;

Bear in mind that the plugin might still override your column width if there isn’t enough room for the data it contains, or the rest of the columns in the table.

Does it work on mobiles/tablets?

Yes, the table will automatically adapt to fit different screen sizes. If your table has too many columns to fit on smaller screens then a ‘+’ icon will appear alongside each post, allowing you to click to view the hidden columns.

When I click to the next page on my posts list, I can’t see the top of the table

This is probably because you have a sticky header (your header sticks to the top of the screen when you scroll down). This means it’s covering the top of your posts table. You can add a ‘scroll offset’ to push the table down to prevent this from happening. For example, if your sticky header is 50 pixels high then use [posts_data_table scroll_offset="50"]

How do I use the posts table with WPML?

If you have a multilingual site using WPML then the plugin will display your posts in the correct language automatically.

Can you customize the plugin for me?

We have developed this free plugin to be flexible and easy to configure so that it will be suitable for many different websites. If you would like to modify the plugin to suit your exact requirements, we would recommend Codeable.


Excellent product and support

This is actually the first review I’ve written for a plugin, but have to highlight the great support I got from across the pond. Andy helped me identify a conflict I had and gave me a work around shortly after I submitted a request for help. The product works great (I went right to the pro version) – simple to modify for whatever requirements you might have.

Posts Table is easy, fast and excellent, and Pro upgrade is better

I don’t often write reviews, but this is a cool plugin. I stumbled across it looking for a simple to use, fast and flexible post lister with a search feature. If fact I tried a few others which I struggled to get to work how I wanted. This does exactly what I need. I am using for a music/band site where I need to list discography, gigography, and press archives. I quickly upgraded to the Pro version which gave me a loads more functionality, including Custom Field support. Barn2Media couldn’t have been better or more customer-focused. I was looking for a couple of tweaks to the plugin, including customised column headings. They added them and bunged them in the next rev. Awesome. Very happy.

Great potential

This was a great solution for my website, easy to use and decent documentation. I’d love to see support for custom post types and custom fields in the future.

Read all 7 reviews

Contributors & Developers

“Posts Table with Search & Sort” is open source software. The following people have contributed to this plugin.


“Posts Table with Search & Sort” has been translated into 2 locales. Thank you to the translators for their contributions.

Translate “Posts Table with Search & Sort” into your language.

Interested in development?

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



6 Aug 2018

  • Minor code improvements.
  • Added GPL license to main plugin folder.
  • Tested with WordPress 4.9.8.


21 May 2018

  • Updated DataTables to 1.10.16.
  • Tested with WordPress 4.9.6.
  • Added ‘posts_data_table_html_output’ filter.


17 March 2018

  • Added ‘author’ and ‘post_status’ shortcode options.
  • Added ‘posts_data_table_query_args’ and ‘posts_data_table_row_data_format’ filters.
  • Tested with WordPress 4.9.4


19 January 2018

  • Tested with WordPress 4.9.2
  • Minor styling tweaks.


7 September 2017

  • Added support for a new ‘tags’ column, to display the post tags in the table.
  • Added a new shortcode option ‘tag’ to allow posts to be restricted by tag.
  • Added a ‘date_format’ shortcode option to allow the date format to be set. See PHP date formats for examples.
  • Category can now be specified by ID or slug, depending on whether a numeric or text value is specified.
  • Fix bug with sort_by option when column not present in table.
  • Code restructure and improvement.
  • Update DataTables library to 1.10.15.


  • Added Greek translation (credit: Yofis Florentin)
  • Added additional language locales for French/German


  • Upgrade to DataTables 1.10.12
  • Allow column default (priorities, widths, etc) to be set per table.
  • Prevent conflict if both free and Pro version of plugin are activated.


Fix bug with localization of main javascript file.


Fix a bug with the search and replace of column data, which produced invalid post URLs in some instances.


Added ‘category’ option to allow table to show posts from a single category only.


  • Changed default for ‘wrap’ so content will now wrap onto multiple lines by default.
  • Changed default conent length to 15 words.
  • Additional FAQs.


Initial release.