Display and edit WordPress posts in Excel-like tables with customizable columns and conditional formatting.
- Excel-like Interface: Powered by Tabulator for a familiar spreadsheet experience
- Inline Editing: Click any cell to edit - changes save automatically via AJAX
- Multiple Field Sources: Works with core post fields, ACF fields, custom meta, and taxonomies
- Column Configuration: Drag-and-drop column ordering, custom labels, toggle edit/sort/filter per column
- Conditional Formatting: Cell and row-level formatting rules with layered styles
- Column Defaults: Set alignment, width, date/number formats, and default colors per column
- Frontend Formatting Toolbar: Excel-like formatting from the frontend (for logged-in users with edit permissions)
- Shortcode Output: Embed tables anywhere with
[pds_table id="123"] - CSV Export: One-click export of table data
- Upload the
pds-post-tablesfolder to/wp-content/plugins/ - Activate the plugin through the 'Plugins' menu in WordPress
- Navigate to Post Tables in the admin menu
- Go to Post Tables > Add New
- Give your table a name
- Select the Post Type to display (Posts, Pages, or any custom post type)
- Add columns using the Add Column button:
- Select a field from the dropdown (grouped by Post Fields, ACF, Meta, Taxonomies)
- Set a custom label
- Toggle Edit, Sort, and Filter options
- Drag to reorder columns
- Configure Column Formatting Defaults (optional):
- Text alignment
- Column width
- Date/number formats
- Default background/text colors
- Add Conditional Formatting Rules (optional):
- Cell rules: Format specific column cells based on their value
- Row rules: Format entire rows based on any field value
- Rules are layered - multiple matching rules stack their styles
- Adjust Table Settings in the sidebar:
- Pagination
- Rows per page
- Row height
- CSV export toggle
- Publish the table
Pre-filter which posts appear in the table by setting conditions in the Data Filters section:
- Click + Add Filter
- Select a field to filter by (Post Fields, ACF, Meta, or Taxonomies)
- Choose an operator:
- Equals / Not Equals: Exact match
- Contains / Does Not Contain: Partial text match
- Starts With / Ends With: Text prefix/suffix match
- Greater Than / Less Than: Numeric or date comparison
- Greater Than or Equal / Less Than or Equal: Inclusive comparison
- Is Empty / Is Not Empty: Check for blank values
- In List / Not In List: Match against comma-separated values
- Enter the comparison value
- All conditions (AND): Posts must match ALL filters
- Any condition (OR): Posts must match AT LEAST ONE filter
- Show only published posts:
post_statusequalspublish - Show posts from 2024:
post_dategreater than or equal2024-01-01 - Show posts in specific categories:
categoryinnews, updates, announcements - Show posts with a specific ACF value:
project_statusequalsactive - Exclude drafts:
post_statusnot equalsdraft
When logged-in users with edit permissions view a table, they see a formatting toolbar above the table:
- Click a cell: Select that cell for formatting
- Click row number: Select the entire row for formatting
- Click a column header: Select the entire column for formatting
- Click outside table: Deselect current selection
- Double-click a cell: Edit the cell value (for editable columns)
- Enter: Save edit
- Escape: Cancel edit
- Background Color: Set background color for selection
- Text Color: Set text color for selection
- Bold: Toggle bold text for selection
- Clear: Remove custom formatting from selection
- Column defaults (set in admin)
- Conditional formatting rules (set in admin)
- Custom column formats (set via frontend toolbar)
- Custom row formats (set via frontend toolbar)
- Custom cell formats (set via frontend toolbar)
Basic usage:
[pds_table id="123"]
With custom row limit:
[pds_table id="123" limit="10"]
With custom CSS class:
[pds_table id="123" class="my-custom-table"]
| Field Type | Display | Inline Editor |
|---|---|---|
| Text | Plain text | Text input |
| Number | Formatted number | Number input |
| Date | Formatted date | Date picker |
| Boolean | ✓ / ✗ | Checkbox toggle |
| Select/Dropdown | Label from options | Dropdown list |
equals/not equalscontains/not containsgreater than/less thanis empty/is not emptyis checked/is not checked(for booleans)
{{TODAY}}- Current date (for date comparisons)
Highlight completed items green:
- Scope: Cell
- Column: Status
- When: equals "Complete"
- Style: Background #d4edda, Text #155724
Highlight overdue rows red:
- Scope: Row
- When: Due Date is less than {{TODAY}}
- Style: Background #f8d7da, Text #721c24
The plugin exposes REST API endpoints under /wp-json/pds-tables/v1/:
GET /tables/{id}/data- Fetch table data with pagination/sorting/filteringPOST /tables/{id}/data- Update a cell valueGET /tables/{id}/config- Get table configurationGET /fields/{post_type}- Get available fields for a post type
- WordPress 5.0+
- PHP 7.4+
- ACF (Advanced Custom Fields) - optional, for ACF field support
- Initial release
GPL v2 or later