=== Posts Table Pro ===
Contributors: andykeith, barn2media
Tags: posts, table, tables, shortcode, search, sort
Requires at least: 4.9
Tested up to: 5.5.1
Requires PHP: 5.6
Stable tag: 2.2.1
License: GNU General Public License v3.0
License URI: http://www.gnu.org/licenses/gpl-3.0.html

A simple plugin to display all your posts in a searchable and sortable table.

== Description ==

Posts Table Pro provides an easy way to list content from your WordPress site in a searchable and sortable data table.
It supports posts, pages, products, custom post types, featured images, taxonomies, custom fields and much more.

To use, simply add the shortcode `[posts_table]` to any page.

Under the hood, it uses the [jQuery DataTables](http://datatables.net/) library to provide the searching and sorting
features, as well as pagination and responsive layouts.

== Installation ==

1. Go to Plugins -> Add New -> Upload and select the plugin ZIP file (see link in Purchase Confirmation Email).
1. Activate the plugin.
1. Enter your license key under Settings -> Posts Table Pro.
1. Go to any post or page and add the shortcode `[posts_table]`.
1. See the full list of [shortcode options](https://barn2.co.uk/kb-categories/posts-table-pro-kb/) to configure your table.

== Frequently Asked Questions ==

See refer to the [documentation](https://barn2.co.uk/kb-categories/posts-table-pro-kb/). If you need further assistance please visit [our support center](https://barn2.co.uk/support-center/).

== Changelog ==

= 2.2.1 =
Release date 23 September 2020

 * Fix: Add backwards compatibility for sites running PHP 5.6 (temporary).

= 2.2 =
Release date 9 September 2020

 * New: Added a 'date_modified' column to display the post's last modified date.
 * New: Added a 'button' column which links to the single post page. A new 'button_text' option is also available which allows you to set the text for the button.
 * Added button text option and made other minor improvements to the settings page.
 * Fix: A missing jQuery dependency was causing Javascript errors on some sites.
 * Fix: The 'post_limit' setting was incorrectly applied to lazy loaded tables. It now applies to lazy load only when explicitly set in the shortcode.
 * Fix: Minor CSS issue with the + and - responsive row icons.
 * Dev: Refactored code to use new architecture and plugin license system.
 * Dev: Updated DataTables and Photoswipe libraries.
 * Dev: Removed old web font formats which are no longer required.
 * Dev: Added Composer support.

<!--more-->

= 2.1.5 =
Release date 23 January 2020

 * Fix a bug with the sort_by option when sorting by custom taxonomy with a slug ending in "_category".
 * Combine CSS and JS assets to reduce the number of HTTP requests.
 * Update DataTables library to version 1.10.20.
 * Tested up to WordPress 5.3.2.

= 2.1.4 =
Release date 30 October 2019

 * Tested up to WordPress 5.3.
 * Fix a bug with several table options where setting in the main settings was not applied correctly.
 * Update Russian translations.
 * Refactored code to use updated plugin library.

= 2.1.3 =
Release date 7 March 2019

 * Fix: Formatting and sorting of date custom fields in EU/AU date format (dd/mm/yyyy or dd/mm/yy).
 * Fix: Ensure sorting for date custom field works correctly when 1 or more posts is missing custom field data.
 * Fix: Ensure custom taxonomies used as dates are correctly formatted when using the 'date_format' option.
 * Fix: Totals and pagination were wrong after deleting search term, when an initial 'search_term' was set and using lazy load.
 * Dev: New filters for date formatting.

= 2.1.2 =
Release date 14 November 2018

 * Added Russian translation.
 * Fix: Bug with 'links' option when using more than one value (e.g. links="title,image").
 * Fix: Prevent private post types being viewed if user doesn't have required capability.
 * Fix: Bug with 'search on click' feature.
 * Tweak: Improve validation of shortcode options.

= 2.1.1 =
Release date 19 September 2018

 * Fix: Bug with lazy load caching which caused incorrect post totals.
 * Fix: Bug with table columns being set incorrectly when not using the 'post' post type.
 * Fix: Bug with lazy load which prevented cache being loaded when sorting by date.
 * Fix: Improve generation of table IDs to avoid clashes.
 * Fix: Ensure initial search term is restored when resetting table.
 * Fix: Improve validation of columns and search term shortcode options.
 * Tweak: Image column no longer links to single product page by default.
 * Dev: Improve table caching code.
 * Dev: New filter to adjust minimum search term length.

= 2.1 =
Release date 31 August 2018

 * Fix: Fix date conversion for custom fields in dd/mm/yy format, to ensure date columns are sorted correctly.
 * Fix: Ensure private posts & pages are hidden if current user doesn't have permission to view them.
 * Fix: CSS issue which prevented FontAwesome icons displaying correctly.
 * Tweak: Update 'post_status' shortcode option to 'status', and add backwards-compatibility for old name.
 * Tweak: Remove extra database call to get posts total when using lazy load.
 * Dev: Improvements to Posts_Data_Table class - get_table and get_data methods now allow 4 possible return types.
 * Dev: Removed inline script for table config and instead use data-config and data-filters attributes on table element.
 * Dev: Replace 'self' with __CLASS__ in callable references to static methods.

= 2.0.3 =
Release date 4 June 2018

 * Fix: Ensure wpautop always runs before do_shortcode in 'content' column to prevent incorrect formatting.
 * Fix: Prevent table hooks being registered multiple times when there are several tables on one page.

= 2.0.2 =
Release date 29 May 2018

 * Fix: Potential bug with totals when using lazy load.
 * Fix: Potential infinite loop when there are posts tables within post tables.
 * Fix: Bug with display of shortcodes in 'content' column.
 * Fix: Bug with custom taxonomies used as date columns.
 * Fix: Display of audio and video shortcodes in responsive child row.
 * Fix: Potential bug when using posts table in archive template and settings were updated.
 * Fix: Bug with categories filter when the 'category' shortcode option was set.
 * Tweak: Ordering now correctly reset when table is reset.
 * Tweak: Added WPML config file.
 * Tweak: Update license code.
 * Dev: Moved shortcode processing to abstract data class.
 * Dev: Made $data_table and $hooks properties public in Posts_Data_Table.
 * Dev: Made $args property public in various classes to allow easier customization.
 * Dev: Re-added add_above() and add_below() functions to data table class.
 * Dev: New hooks 'posts_table_hooks_before_register' and 'posts_table_hooks_after_register'.
 * Dev: Tested up to WP 4.9.6.

= 2.0.1 =
Release date 15 May 2018

 * Fix: Bug with row attributes and classes when using lazy load.
 * Fix: Bug when using table with one column and column heading is blank.
 * Tweak: Improve table reset.
 * Tweak: Typo on settings page.

= 2.0 =
Release date 14 May 2018

 * New: New plugin options added to the settings page (Settings > Posts Table Pro). Use these to set table options and shortcode defaults.
 * New: Image lightbox feature - open post images in a lightbox when using the 'image' column.
 * New: Table caching added to improve performance. Disabled by default - enable from the settings page or use the 'cache' option in shortcode.
 * New: Categories and custom taxonomy filters now display in correct hierarchy (Parent -> Child -> Grandchild) structure.
 * New: 'search_term' shortcode option to set the initial table search.
 * New: Search filters now search by 'slug' to improve accuracy and avoid name clashes.
 * New: Toolbar button available in Edit Post/Page screen to insert the posts table shortcode.
 * New: Add support for Time Picker fields in Advanced Custom Fields.
 * Fix: Search filters (e.g. Categories filter) now show the correct results when a parent category/term is selected (i.e. posts which have a child category of the selected category are now included in the results).
 * Fix: Bug with lazy load which caused pagination to be set incorrectly when resetting table.
 * Fix: Bug when selecting posts by custom field in ACF and field value is stored as an array.
 * Tweak: Icons replaced with FontAwesome.
 * Tweak: Posts limit now ignored when using lazy load.
 * Tweak: Improved cross-browser support and theme compatibility.
 * Dev: All plugin translation now handled by gettext functions. Old JSON translation files have been deprecated.
 * Dev: Complete code restructure and new data classes added.
 * Dev: Updated DataTables library to 1.10.16.
 * Dev: New filters: posts_table_after_get_data, posts_table_after_get_table, posts_table_custom_table_data_<column>, posts_table_optimize_table_query.
 * Dev: Deprecated filters: posts_table_supported_languages, posts_table_get_data, post_table_get_table, posts_table_cell_data_<column>.
 * Dev: Re-added the posts table wrapper div.
 * Dev: Various other code fixes and improvements.

= 1.6 =
Release date 15 December 2017

 * You can now pass just the custom field key to the "cf" option to retrieve posts which have that custom field (regardless of value).
 * Code restructure and performance improvements.
 * Portuguese translation.
 * Tested in latest version of WordPress (4.9.1).
 * Fix: Allow ACF fields which store multiple values (e.g. checkbox fields) to be used as selectors with the "cf" option.
 * Fix: Bug when using column names containing a dot "." with lazy load enabled.
 * Tweak: Additional CSS classes and post ID now added to each row in table.
 * Tweak: Added 'posts_table_open_posts_in_new_tab' filter.
 * Tweak: Changed DataTables error reporting.
 * Tweak: New hooks for post table tax query and meta query.
 * Tweak: Removed additional wrapper div so simplify HTML structure.

= 1.5.5 =
Release date 1 October 2017

 * New: Add support for ACF date_time_picker field.
 * Fix: Ensure videos are always responsive on smaller screens.
 * Fix: Prevent bug when using two of the same column in table.
 * Fix: Potential PHP error when handling date_picker fields in ACF.

= 1.5.4 =
Release date 5 September 2017

 * New: Changed names of all shortcode options beginning 'display_'. Old options still supported for backwards compatibility.
 * Fix: Warning generated on post type validation.
 * Fix: Bug with tax query when using '+' indicator in 'term' option.
 * Tweak: Added post type and post ID as CSS classes to each row, and added 'posts_table_row_classes' and 'posts_table_row_attributes' filters.
 * Tweak: Update documentation links and other minor changes.

= 1.5.3 =
Release date 22 August 2017

 * Added 'numeric_terms' option - set to true if you use categories/terms which have numeric slugs.
 * Fix: Allow shortcodes to work in all custom field columns.
 * Fix: Bug with formatting of date custom fields.
 * Fix: Support for custom field date columns held as UNIX timestamps.
 * Fix: Selecting by custom field (using 'cf' option) wasn't working when used for Events Calendar events.
 * Fix: Conflict with Hero Knowledge Base plugin.
 * Tweak: Added hook to allow ordering to be enabled/disabled for specific columns.
 * Tweak: Update DataTables to 1.10.15.

= 1.5.2 =
Release date 16 April 2017

 * New: Added support for ACF Repeater fields.
 * New: Added template tags ptp_product_table and ptp_the_product_table for easier use in theme templates.
 * Fix: Ensure width of image column matches the image size used.
 * Fix: Compatibility with date picker fields ACF Pro.
 * Fix: Bug with custom column names appearing in search filter drop-downs.
 * Tweak: Update DataTables to 1.10.13
 * Tweak: Removed $html parameter from 'posts_table_shortcode_output' filter.
 * Tweak: Added filters for separator used in item lists (e.g. post categories).

= 1.5.1 =
Release date 23 February 2017

 * Fix: Bug with search filters and search on click when using lazy load option.
 * Fix: Intermittent bug with boolean shortcode options.
 * Fix: Bug with search filters which prevented first search term in table being added to list.
 * Tweak: Ensure shortcode doesn't run in admin.
 * Tweak: Ensure shortcode doesn't run on search results page.

= 1.5 =
Release date 13 February 2017

 * Fix: Bug with responsive display functions (responsive_display="modal" or "child_row_visible").
 * Fix: Hidden columns are no loner shown in modal child row display.
 * Fix: Bug with date format for date custom fields.
 * Fix: Search filters for hidden columns.
 * Fix: Bug with license code.
 * Tweak: Restructure Javascript array functions to prevent issues with other frameworks.
 * Tweak: Added filter 'posts_table_acf_value' for ACF custom field values.
 * Tweak: Added filter 'posts_table_inline_config' to modify table config.
 * Tweak: Replaced ID with Posts_Data_Table object in filter hooks.

= 1.4.9 =
Release date 8 February 2017

 * Fix: If search filter is present as column in table, use column data as items for drop-down.
 * Fix: Bug with custom taxonomy column heading.
 * Tweak: Change inline table config code.
 * Tweak: Added filter 'posts_table_shortcode_output' to filter the table shortcode HTML.

= 1.4.8 =
Release date 1 February 2017

 * New: Added 'display_reset_button' option to show or hide the reset button above the table.
 * New: Added column classes to every row in table to allow easier styling of table contents.
 * New: Deactivate license button on plugin settings page to make it easier to switch sites or move from development to production.
 * Fix: Change ACF code to ensure any theme hooks run.
 * Fix: Bug with select, text area and WYSIWYG fields in ACF.
 * Fix: Bug with display of search filters on mobile.
 * Fix: Name of Polish translation file for datatables.
 * Fix: Bug when selecting posts from several categories with '+' (AND) operator.
 * Fix: Restrict search filters to show only child terms when 'category', 'tag' or 'term' option specified.
 * Tweak: Ability to set a blank column heading. Use "blank" after column name, e.g. columns="price:blank".
 * Tweak: Added 'posts_table_search_label', 'posts_table_filter_label' and 'posts_table_reset_button' filter to allow those elements to be customised.
 * Tweak: Added various filters to filter all data in the table (price, add to cart, variations, attributes, etc.)
 * Tweak: Format URL custom fields as links.
 * Tweak: Adjust table styles to enable easier theme customisation.
 * Tweak: Improved support for ACF fields.
 * Tweak: Changed custom field filter to 'posts_table_data_custom_field' (old filter still valid but deprecated).
 * Tweak: Moved inline table config directly below table element.

= 1.4.7 =
Release date 19 January 2017

 * Fix: Bug with when sorting custom field date columns in the format "May 2016".
 * Fix: Bug with custom field dates stored in European format (d/m/y).
 * Fix: Bug with 'tags' column which prevented tags from being displayed.
 * Tweak: Add dashicons dependency for plugin stylesheet.

= 1.4.6 =
Release date 18 January 2017

 * New: The 'filters' option is now much more flexible - you can include categories, tags or any custom taxonomy, even if they are not
displayed as a column in your table. For example, filters="categories,tax:staff_location" or filters="true".
 * New: Search filters are now supported for lazy loaded tables.
 * New: Custom fields or taxonomies which represent dates can now be sorted in correct date order. Use new option "date_columns" to
specify which additional columns should be treated as dates, e.g. date_columns="cf:start_date,tax:staff_date".
 * New: 'term' option accepts one taxonomy as well as multiple taxonomies in a single list, e.g. term="product_tag:cool,awesome,great" or
term="product_tag:cool,staff_location:london".
 * New: Polish translation (credit: Marcin Wasilewski).
 * Fix: Fixed table layout issue when displaying videos in table.
 * Fix: Bug with media shortcodes when using lazy_load option.
 * Fix: Format of date picker fields in Advanced Custom Fields. Will use 'date_format' option if specified, otherwise the display format in ACF.
 * Fix: Prevent first column from hiding on smaller screens when using responsive_control="inline".
 * Fix: Bug with drop-down filter selection.
 * Fix: Bug with sort_by option for custom fields.
 * Tweak: Table now scrolls to top when clicking a category, tag, author, etc. in the table and search_on_click="true".
 * Tweak: Added filter 'posts_table_custom_field_value' to filter custom field values in table.
 * Tweak: Add filter for column header class - 'posts_table_column_class_ ' + the column name.
 * Tweak: Added table ID to most filters to allow more specific filtering.
 * Tweak: Updated license activation code.
 * Tweak: Re-structure Javacript code.
 * Tweak: Change styling and location of reset button, and other minor styling improvements.

= 1.4.5 =
Release date 25 November 2016

* Added fitVids.js to enable responsive video for tables displaying media files.
* Fix bug with CSS table layout.
* Tested with WordPress 4.7.

= 1.4.4 =
Release date 24 November 2016

* Added support for search filters (drop-down lists) to filter table by category, tag, author and custom taxonomy columns. Use filters="true" to enable.
* Added Reset button next to search box to clear the current table search.
* New option 'shortcodes' to allow shortcode content to be displayed in the table (content and excerpt columns).
* Added support for WordPress embeds using [video], [audio], and [playlist] shortcodes. Use shortcodes="true" to enable.
* Added four new options to show or hide the page length drop-down, search box, results totals and pagination.
Options are 'display_page_length', 'display_search_box', 'display_totals' and 'display_pagination' and each
can be set to either 'top', 'bottom', 'both' or 'false' to hide the element.
* Fix bug with 'search on click' feature for categories, tags, etc. Search is now restricted to the column clicked on.
* Fix compatibility issue with WordPress versions below 4.5.
* Styling improvements.

= 1.4.2 =
Release date 8 November 2016

* Added 'exclude_category' option to allow entire post categories to be excluded from table. Use category slugs or IDs.
* Added 'include' option to display only the posts specified by their IDs
* Added 'author' option to restrict posts in table to a specific author (or list of authors).
* Added 'post_limit' option to limit the total number of posts displayed in the table.
* Added 'auto_width' option to enable or disable the automatic column width calculations (default: true)
* Added 'paging_type' option to allow control over pagination style used - see documentation for details
* The 'category', 'tag' and 'term' options now accept IDs as as well as slugs.
* Fixed bug with custom fields which have mixed case or uppercase keys.
* Added Italian translation (credit: Libri Ehret).

= 1.4.1 =
Release date 3 November 2016

* Added $post object as parameter to 'posts_table_custom_data' filter
* Bug fix with sort_by option

= 1.4 =
Release date 3 November 2016

* Added new 'excerpt' column to show the post excerpt. New option 'excerpt_length' sets the number of words to use for the excerpt.
* Table can now be sorted by the following: menu_order (use 'order' option set for page/post), id (sort by post ID), comment_count,
modified (last modified date), rand (random ordering), author, name (order by post slug), and type (order by post type).
* Allow custom columns to be added to table - use filter 'posts_table_custom_data_<column>' to populate custom columns
* Allow image_size to be set using one number for both width and height (e.g. image_size=50)
* Added new responsive options - responsive_control, responsive_display, and column_breakpoints. These allow more control over the
display when viewed on smaller screens. See documentation for details.
* Changed default table columns if not viewing posts
* Allow featured image column to link to the relevant post or page (use links="image" or links="all")
* Allow categories or tags to be used in links option
* The 'Show <x> entries' drop-down now includes an 'All' option to display all rows
* The 'Show <x> entries' drop-down above table now defaults to the 'rows_per_page' setting in the shortcode
* Renamed 'ajax' option to 'lazy_load'. ajax option is still supported for backwards-compatibility.
* Improved the table styling
* Fixed bug with Advanced Custom Field values for date_picker, wysiwyg and text_area fields
* Added documentation and contact support links to settings page
* Updated license validation code
* Other code improvements and bug fixes

= 1.3.1 =
Release date 23 September 2016

* Add support for all Relational fields in ACF (i.e Page Link, Post Object, Relationship, Taxonomy and User fields)
* Added Dutch translation (credit: Alex Van Haren)
* Fix bug for non-standard date formats for Date Picker fields in ACF
* Fix bug in license key activation

= 1.3 =
Release date 10 September 2016

* Added full support for Advanced Custom Fields plugin
* Added new shortcode options 'no_posts_message' and 'no_posts_filtered_message' to allow custom messages when no posts are found (English language only)
* Added new shortcode option 'date_format' to allow custom date format to be used - see documentation for examples
* Allow image_size to use format "50x50" as well as "50,50"
* Allow column widths to be specified in pixels as well as a percentage
* Updated EDD Updater which handles the plugin updates
* Updated license key code
* Fixed conflict with Hide Featured Image plugin
* Update language files
* New filters added and other minor tweaks

= 1.2.1 =
Release date 17 August 2016

* Fix bug with widths attribute that was preventing custom column widths being set

= 1.2 =
Release date 11 August 2016

* Allow custom headings to be set for columns (see documentation for examples)
* Allow all post/page content to be shown in the table. To enable this, set content_length to '-1'
* Update to version 1.10.12 of DataTables
* Changed text domain and fixed loading of translation files
* Add settings link to Plugins page
* Fix: javascript bug with 'search on click' feature
* Fix: bug preventing featured images working when AJAX enabled
* Fix: removed use filter_input() for server variables as not always reliable

= 1.1 =
Release date 23 May 2016

* Added support for featured images and new 'image_size' attribute.

= 1.0 =
Release date 20 May 2016

* Initial release.