{"id":298967,"date":"2026-06-13T19:47:19","date_gmt":"2026-06-13T19:47:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/baratables\/"},"modified":"2026-06-21T05:39:42","modified_gmt":"2026-06-21T05:39:42","slug":"baratables","status":"publish","type":"plugin","link":"https:\/\/en-za.wordpress.org\/plugins\/baratables\/","author":12118857,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.0","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"BaraTables","header_author":"Nathan Noom","header_description":"Build searchable, sortable tables and charts from CSV files, manual data, WordPress content, or external databases.","assets_banners_color":"cdd2db","last_updated":"2026-06-21 05:39:42","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/nathannoom\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":99,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"nathan.noom","date":"2026-06-13 19:46:41"},"1.0.1":{"tag":"1.0.1","author":"nathan.noom","date":"2026-06-21 05:39:42"}},"upgrade_notice":{"1.0.1":"<p>Maintenance release with improved date formatting controls, safer frontend output, and small admin performance improvements.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3571309,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3571309,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3580304,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3580304,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3581326,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"meta\":{\"title\":\"BaraTables Live Preview\",\"author\":\"Nathan Noom\",\"description\":\"A temporary WordPress demo with BaraTables installed, activated, and seeded with a sample table and chart.\"},\"landingPage\":\"\\\/\",\"preferredVersions\":{\"php\":\"8.3\",\"wp\":\"latest\"},\"features\":{\"networking\":true},\"steps\":[{\"step\":\"resetData\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"baratables\"},\"options\":{\"activate\":true}},{\"step\":\"runPHP\",\"code\":\"<?php require_once '\\\/wordpress\\\/wp-load.php'; if (!function_exists('is_plugin_active')) { require_once ABSPATH . 'wp-admin\\\/includes\\\/plugin.php'; } if (!is_plugin_active('baratables\\\/baratables.php')) { activate_plugin('baratables\\\/baratables.php'); } if (!class_exists('BaraTables_Repository') || !class_exists('BaraTables_Chart_Repository')) { return; } $column = function ($key, $label, $filter = 'none', $sort_priority = 0, $sort_direction = 'asc', $format_date = false, $date_format = '') { return array('key' => $key, 'label' => $label, 'filter_label' => $label, 'source' => 'custom', 'filter' => $filter, 'filter_sort' => 'asc', 'slug' => 'custom:' . $key, 'hide_title' => false, 'hidden' => false, 'searchable' => true, 'sort_priority' => $sort_priority, 'sort_direction' => $sort_direction, 'sort_enabled' => $sort_priority > 0, 'sortable' => true, 'filter_values' => array(), 'filter_type_priority' => array(), 'filter_strict' => false, 'format_date' => $format_date, 'date_format' => $date_format); }; $options = array('paging' => true, 'pagingNumbers' => true, 'pagingFirstLast' => true, 'pagingPreviousNext' => true, 'lengthChange' => true, 'searchBox' => true, 'searchColumns' => true, 'info' => true, 'filtersTitle' => true, 'filtersTitleText' => 'Demo filters', 'ordering' => true, 'colReorder' => true, 'stripe' => true, 'rowBorder' => true, 'hover' => true, 'pageLength' => 10, 'layoutTopStart' => array('pagelength', 'buttons'), 'layoutTopEnd' => array('search'), 'layoutBottomStart' => array('info'), 'layoutBottomEnd' => array('paging'), 'buttons' => array('copy', 'csv', 'print', 'colvis', 'pagelength'), 'searchPlaceholder' => 'Search demo rows...'); $table = array('id' => 'playground-product-revenue', 'name' => 'Playground: Product Revenue', 'status' => 'publish', 'source_type' => 'custom_data', 'post_type' => 'post', 'post_types' => array(), 'columns' => array($column('col_1', 'Product', 'dropdown'), $column('col_2', 'Region', 'dropdown'), $column('col_3', 'Revenue', 'none', 1, 'desc'), $column('col_4', 'Launch Date', 'none', 0, 'asc', true, 'M j, Y'), $column('col_5', 'Status', 'dropdown')), 'custom_data' => array('columns' => array('Product', 'Region', 'Revenue', 'Launch Date', 'Status'), 'rows' => array(array('Atlas Console', 'Midwest', '184000', '2026-01-15', 'Live'), array('Beacon Reports', 'West', '132500', '2026-02-02', 'Pilot'), array('Cedar Sync', 'South', '98000', '2026-02-20', 'Live'), array('Delta Importer', 'Northeast', '156000', '2026-03-04', 'Beta'), array('Evergreen Charts', 'Midwest', '211000', '2026-03-18', 'Planned'), array('Frontier Filters', 'West', '127500', '2026-04-01', 'Live'), array('Grove Analytics', 'South', '143000', '2026-04-15', 'Live'), array('Harbor Dashboards', 'Northeast', '88000', '2026-05-03', 'Pilot'), array('Ion Metrics', 'West', '176500', '2026-05-19', 'Live'), array('Juniper CRM', 'South', '121000', '2026-06-02', 'Beta'), array('Keystone Sync', 'Northeast', '199500', '2026-06-18', 'Planned'), array('Lumen Portal', 'Midwest', '109000', '2026-07-01', 'Live'))), 'table_options' => $options, 'filter_order' => array('custom:col_1', 'custom:col_2', 'custom:col_5'), 'access_control' => array(), 'value_overrides' => array()); $table_post_id = wp_insert_post(array('post_type' => BaraTables_Repository::CPT, 'post_status' => 'publish', 'post_title' => 'Playground: Product Revenue', 'post_name' => 'playground-product-revenue')); if (!is_wp_error($table_post_id) && $table_post_id) { update_post_meta($table_post_id, BaraTables_Repository::META_KEY, $table); update_post_meta($table_post_id, BaraTables_Repository::META_SLUG, 'playground-product-revenue'); } $chart = array('id' => 'playground-revenue-chart', 'name' => 'Playground: Revenue Chart', 'status' => 'publish', 'table_id' => 'playground-product-revenue', 'chart' => array('enabled' => true, 'type' => 'bar', 'x_axis' => 'custom:col_1', 'series' => array('custom:col_3'), 'position' => 'above', 'height' => 340)); $chart_post_id = wp_insert_post(array('post_type' => BaraTables_Chart_Repository::CPT, 'post_status' => 'publish', 'post_title' => 'Playground: Revenue Chart', 'post_name' => 'playground-revenue-chart')); if (!is_wp_error($chart_post_id) && $chart_post_id) { update_post_meta($chart_post_id, BaraTables_Chart_Repository::META_KEY, $chart); update_post_meta($chart_post_id, BaraTables_Chart_Repository::META_SLUG, 'playground-revenue-chart'); } $demo_css = '.btbl-playground-demo .btbl-table-wrapper {\\n  position: relative;\\n}\\n\\n.btbl-playground-demo .btbl-chart {\\n  width: 100% !important;\\n  min-height: 340px;\\n  border: 1px solid #d9e2ec;\\n  border-radius: 8px;\\n  background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);\\n  padding: 12px;\\n  box-sizing: border-box;\\n}\\n\\n.btbl-playground-demo .btbl-filter-wrapper {\\n  margin: 0 0 18px;\\n  padding: 16px;\\n  border: 1px solid #d9e2ec;\\n  border-radius: 8px;\\n  background: #f8fbff;\\n}\\n\\n.btbl-playground-demo .btbl-filter-header {\\n  display: flex;\\n  align-items: center;\\n  justify-content: space-between;\\n  gap: 12px;\\n  margin-bottom: 14px;\\n}\\n\\n.btbl-playground-demo .btbl-filter-title {\\n  font-size: 14px;\\n  font-weight: 750;\\n  color: #17202a;\\n}\\n\\n.btbl-playground-demo .btbl-filter-reset .button,\\n.btbl-playground-demo .btbl-reset-button {\\n  min-height: 32px;\\n  padding: 0 12px;\\n  border: 1px solid #cbd8e6 !important;\\n  border-radius: 7px !important;\\n  background: #ffffff !important;\\n  color: #334155 !important;\\n  box-shadow: none !important;\\n  font-size: 13px;\\n  font-weight: 650;\\n}\\n\\n.btbl-playground-demo .btbl-filter {\\n  margin-bottom: 12px;\\n}\\n\\n.btbl-playground-demo .btbl-filter-label {\\n  margin-bottom: 6px;\\n  color: #5d6b7a;\\n  font-size: 12px;\\n  font-weight: 750;\\n  letter-spacing: .06em;\\n  text-transform: uppercase;\\n}\\n\\n.btbl-playground-demo .select2-container--default .select2-selection--single {\\n  height: 38px;\\n  border: 1px solid #cbd8e6;\\n  border-radius: 7px;\\n  background: #ffffff;\\n}\\n\\n.btbl-playground-demo .select2-container--default .select2-selection--single .select2-selection__rendered {\\n  line-height: 36px;\\n  color: #17202a;\\n  font-size: 14px;\\n}\\n\\n.btbl-playground-demo .select2-container--default .select2-selection--single .select2-selection__arrow {\\n  height: 36px;\\n}\\n\\n.btbl-playground-demo .dt-container {\\n  width: 100% !important;\\n  color: #17202a;\\n  font-size: 14px;\\n}\\n\\n.btbl-playground-demo .dt-layout-row {\\n  display: flex;\\n  flex-wrap: wrap;\\n  align-items: center;\\n  justify-content: space-between;\\n  gap: 12px;\\n  margin: 0 0 14px;\\n}\\n\\n.btbl-playground-demo .dt-layout-row:last-child {\\n  margin: 14px 0 0;\\n}\\n\\n.btbl-playground-demo .dt-layout-cell {\\n  display: flex;\\n  flex-wrap: wrap;\\n  align-items: center;\\n  gap: 8px;\\n}\\n\\n.btbl-playground-demo .dt-layout-full {\\n  display: block;\\n  width: 100%;\\n  overflow-x: auto;\\n}\\n\\n.btbl-playground-demo .dt-length,\\n.btbl-playground-demo .dt-search {\\n  display: flex;\\n  align-items: center;\\n  gap: 8px;\\n  color: #5d6b7a;\\n  font-size: 13px;\\n  font-weight: 650;\\n}\\n\\n.btbl-playground-demo .dt-input,\\n.btbl-playground-demo .dt-search input,\\n.btbl-playground-demo .dt-length select {\\n  min-height: 36px;\\n  border: 1px solid #cbd8e6 !important;\\n  border-radius: 7px !important;\\n  background: #ffffff !important;\\n  color: #17202a !important;\\n  box-shadow: none !important;\\n  font-size: 14px;\\n}\\n\\n.btbl-playground-demo .dt-search input {\\n  min-width: 220px;\\n  padding: 6px 10px;\\n}\\n\\n.btbl-playground-demo .dt-buttons {\\n  display: flex;\\n  flex-wrap: wrap;\\n  gap: 8px;\\n}\\n\\n.btbl-playground-demo .dt-button,\\n.btbl-playground-demo .btbl-search-columns-toggle {\\n  min-height: 36px;\\n  padding: 0 12px !important;\\n  border: 1px solid #cbd8e6 !important;\\n  border-radius: 7px !important;\\n  background: #ffffff !important;\\n  color: #243142 !important;\\n  box-shadow: 0 1px 2px rgba(23, 32, 42, .04) !important;\\n  font-size: 13px !important;\\n  font-weight: 700 !important;\\n}\\n\\n.btbl-playground-demo .dt-button:hover,\\n.btbl-playground-demo .btbl-search-columns-toggle:hover,\\n.btbl-playground-demo .btbl-reset-button:hover {\\n  border-color: #8fb4f4 !important;\\n  background: #f5f9ff !important;\\n  color: #1d4ed8 !important;\\n}\\n\\n.btbl-playground-demo .btbl-search-columns-dropdown {\\n  border: 1px solid #cbd8e6;\\n  border-radius: 8px;\\n  box-shadow: 0 14px 34px rgba(23, 32, 42, .14);\\n}\\n\\n.btbl-playground-demo table.dataTable,\\n.btbl-playground-demo .btbl-table {\\n  width: 100% !important;\\n  border: 1px solid #d9e2ec !important;\\n  border-collapse: separate !important;\\n  border-spacing: 0 !important;\\n  border-radius: 8px;\\n  overflow: hidden;\\n  background: #ffffff;\\n}\\n\\n.btbl-playground-demo table.dataTable thead th,\\n.btbl-playground-demo .btbl-table thead th {\\n  border-bottom: 1px solid #d9e2ec !important;\\n  background: #f5f8fc !important;\\n  color: #243142;\\n  font-size: 12px;\\n  font-weight: 800;\\n  letter-spacing: .06em;\\n  text-transform: uppercase;\\n}\\n\\n.btbl-playground-demo table.dataTable tbody td,\\n.btbl-playground-demo .btbl-table tbody td {\\n  border-top: 1px solid #eef2f7;\\n  color: #243142;\\n  font-size: 14px;\\n  vertical-align: middle;\\n}\\n\\n.btbl-playground-demo table.dataTable tbody tr:nth-child(even) td,\\n.btbl-playground-demo .btbl-table tbody tr:nth-child(even) td {\\n  background: #fbfdff;\\n}\\n\\n.btbl-playground-demo table.dataTable tbody tr:hover td,\\n.btbl-playground-demo .btbl-table tbody tr:hover td {\\n  background: #f2f7ff !important;\\n}\\n\\n.btbl-playground-demo .btbl-col-custom-col_3 {\\n  font-variant-numeric: tabular-nums;\\n  font-weight: 750;\\n}\\n\\n.btbl-playground-demo .dt-info {\\n  color: #5d6b7a;\\n  font-size: 13px;\\n  font-weight: 650;\\n}\\n\\n.btbl-playground-demo .dt-paging {\\n  display: flex;\\n  flex-wrap: wrap;\\n  gap: 6px;\\n}\\n\\n.btbl-playground-demo .dt-paging-button {\\n  min-width: 34px;\\n  min-height: 34px;\\n  border: 1px solid #cbd8e6 !important;\\n  border-radius: 7px !important;\\n  background: #ffffff !important;\\n  color: #243142 !important;\\n  font-weight: 700;\\n}\\n\\n.btbl-playground-demo .dt-paging-button:hover {\\n  border-color: #2f6fed !important;\\n  background: #2f6fed !important;\\n  color: #ffffff !important;\\n}\\n\\n.btbl-playground-demo .dt-paging-button.current,\\n.btbl-playground-demo .dt-paging-button.current:hover,\\n.btbl-playground-demo .dt-paging .current,\\n.btbl-playground-demo .dt-paging .current:hover,\\n.btbl-playground-demo div.dt-container .dt-paging button.dt-paging-button.current,\\n.btbl-playground-demo div.dt-container .dt-paging button.dt-paging-button.current:hover {\\n  border-color: #2f6fed !important;\\n  background: #2f6fed !important;\\n  color: #ffffff !important;\\n}\\n\\n@media (max-width: 700px) {\\n  .btbl-playground-demo .dt-layout-row,\\n  .btbl-playground-demo .dt-layout-cell,\\n  .btbl-playground-demo .btbl-filter-header {\\n    display: block;\\n  }\\n\\n  .btbl-playground-demo .dt-buttons,\\n  .btbl-playground-demo .dt-paging {\\n    margin-top: 10px;\\n  }\\n\\n  .btbl-playground-demo .dt-search input {\\n    width: 100%;\\n    min-width: 0;\\n  }\\n}'; if (function_exists('wp_update_custom_css_post')) { wp_update_custom_css_post($demo_css); } $page_content = '<!-- wp:html -->\\n<main class=\\\"btbl-playground-demo alignfull\\\" style=\\\"box-sizing:border-box;width:min(1120px,calc(100vw - 32px));max-width:1120px!important;margin:36px auto 64px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#17202a;\\\">\\n<section style=\\\"padding:36px 0 28px;border-bottom:1px solid #d9e2ec;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:28px;align-items:end;\\\">\\n<div>\\n<p style=\\\"margin:0 0 10px;text-transform:uppercase;letter-spacing:.12em;font-size:12px;font-weight:800;color:#2f6fed;\\\">BaraTables for WordPress<\\\/p>\\n<h1 style=\\\"margin:0;font-size:clamp(36px,5vw,48px);line-height:1.05;letter-spacing:0;\\\">Interactive tables and charts from site data.<\\\/h1>\\n<p style=\\\"margin:16px 0 0;color:#5d6b7a;font-size:17px;line-height:1.55;\\\">Explore a sample product revenue table with search, filters, export buttons, column visibility, sorting, pagination, and a connected chart.<\\\/p>\\n<\\\/div>\\n<div style=\\\"display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;\\\">\\n<div style=\\\"border:1px solid #d9e2ec;border-radius:8px;padding:14px;background:#fff;box-shadow:0 12px 30px rgba(23,32,42,.06);\\\"><strong style=\\\"display:block;font-size:25px;\\\">4<\\\/strong><span style=\\\"display:block;margin-top:6px;font-size:12px;color:#5d6b7a;font-weight:700;text-transform:uppercase;\\\">Data sources<\\\/span><\\\/div>\\n<div style=\\\"border:1px solid #d9e2ec;border-radius:8px;padding:14px;background:#fff;box-shadow:0 12px 30px rgba(23,32,42,.06);\\\"><strong style=\\\"display:block;font-size:25px;\\\">5<\\\/strong><span style=\\\"display:block;margin-top:6px;font-size:12px;color:#5d6b7a;font-weight:700;text-transform:uppercase;\\\">Chart types<\\\/span><\\\/div>\\n<div style=\\\"border:1px solid #d9e2ec;border-radius:8px;padding:14px;background:#fff;box-shadow:0 12px 30px rgba(23,32,42,.06);\\\"><strong style=\\\"display:block;font-size:25px;\\\">7<\\\/strong><span style=\\\"display:block;margin-top:6px;font-size:12px;color:#5d6b7a;font-weight:700;text-transform:uppercase;\\\">Column tools<\\\/span><\\\/div>\\n<div style=\\\"border:1px solid #d9e2ec;border-radius:8px;padding:14px;background:#fff;box-shadow:0 12px 30px rgba(23,32,42,.06);\\\"><strong style=\\\"display:block;font-size:25px;\\\">0<\\\/strong><span style=\\\"display:block;margin-top:6px;font-size:12px;color:#5d6b7a;font-weight:700;text-transform:uppercase;\\\">Code needed<\\\/span><\\\/div>\\n<\\\/div>\\n<\\\/section>\\n<section style=\\\"margin-top:30px;padding:24px;border:1px solid #d9e2ec;border-radius:8px;background:#fff;box-shadow:0 14px 38px rgba(23,32,42,.07);overflow:auto;\\\">\\n<h2 style=\\\"margin:0 0 6px;font-size:26px;line-height:1.2;\\\">Revenue by product<\\\/h2>\\n<p style=\\\"margin:0 0 18px;color:#5d6b7a;font-size:17px;line-height:1.55;\\\">A chart shortcode generated from manually entered table rows.<\\\/p>\\n[bara_chart id=\\\"playground-revenue-chart\\\"]\\n<\\\/section>\\n<section style=\\\"margin-top:30px;padding:24px;border:1px solid #d9e2ec;border-radius:8px;background:#fff;box-shadow:0 14px 38px rgba(23,32,42,.07);overflow:auto;\\\">\\n<h2 style=\\\"margin:0 0 6px;font-size:26px;line-height:1.2;\\\">Product revenue table<\\\/h2>\\n<p style=\\\"margin:0 0 18px;color:#5d6b7a;font-size:17px;line-height:1.55;\\\">The matching table shortcode with frontend controls enabled.<\\\/p>\\n[bara_table id=\\\"playground-product-revenue\\\"]\\n<\\\/section>\\n<\\\/main>\\n<!-- \\\/wp:html -->'; $page_id = wp_insert_post(array('post_type' => 'page', 'post_status' => 'publish', 'post_title' => 'BaraTables Live Preview', 'post_name' => 'baratables-demo', 'post_content' => $page_content)); if (!is_wp_error($page_id) && $page_id) { update_option('show_on_front', 'page'); update_option('page_on_front', $page_id); } update_option('blogname', 'BaraTables Live Preview'); update_option('blogdescription', 'Interactive table and chart demo'); ?>\"},{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"}]}"}},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3571309,"resolution":"1","location":"assets","locale":"","width":1440,"height":522},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3571309,"resolution":"2","location":"assets","locale":"","width":1440,"height":826},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3571309,"resolution":"3","location":"assets","locale":"","width":1440,"height":850},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3571309,"resolution":"4","location":"assets","locale":"","width":1440,"height":760}},"screenshots":{"1":"Frontend chart generated from a BaraTables table.","2":"Frontend table with search, filters, export buttons, column visibility, sorting, and pagination.","3":"Table builder column and filter controls inside the WordPress admin.","4":"Chart builder connected to a BaraTables table with chart type, axis, series, and height settings."}},"plugin_section":[],"plugin_tags":[4108,567,36614,80,1240],"plugin_category":[43],"plugin_contributors":[266982],"plugin_business_model":[],"class_list":["post-298967","plugin","type-plugin","status-publish","hentry","plugin_tags-charts","plugin_tags-csv","plugin_tags-datatables","plugin_tags-shortcode","plugin_tags-tables","plugin_category-customization","plugin_contributors-nathannoom","plugin_committers-nathannoom"],"banners":{"banner":"https:\/\/ps.w.org\/baratables\/assets\/banner-772x250.png?rev=3580304","banner_2x":"https:\/\/ps.w.org\/baratables\/assets\/banner-1544x500.png?rev=3580304","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/baratables\/assets\/icon-128x128.png?rev=3571309","icon_2x":"https:\/\/ps.w.org\/baratables\/assets\/icon-256x256.png?rev=3571309","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/baratables\/assets\/screenshot-1.png?rev=3571309","caption":"Frontend chart generated from a BaraTables table."},{"src":"https:\/\/ps.w.org\/baratables\/assets\/screenshot-2.png?rev=3571309","caption":"Frontend table with search, filters, export buttons, column visibility, sorting, and pagination."},{"src":"https:\/\/ps.w.org\/baratables\/assets\/screenshot-3.png?rev=3571309","caption":"Table builder column and filter controls inside the WordPress admin."},{"src":"https:\/\/ps.w.org\/baratables\/assets\/screenshot-4.png?rev=3571309","caption":"Chart builder connected to a BaraTables table with chart type, axis, series, and height settings."}],"raw_content":"<!--section=description-->\n<p>BaraTables helps you turn site data into interactive tables and charts directly in WordPress. Build from manual rows, CSV uploads, WordPress content, or an external MySQL\/MariaDB database, then publish the result with a shortcode.<\/p>\n\n<p>Tables can include search, sorting, pagination, filters, export buttons, column visibility controls, and custom control layouts. Charts can be created from any BaraTables table and displayed separately with their own shortcode.<\/p>\n\n<p>BaraTables uses clean, theme-friendly frontend styles by default. It is designed to look presentable immediately while staying easy to restyle with your theme or custom CSS.<\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li>Build tables from WordPress content, CSV files, manual data, or external MySQL\/MariaDB databases<\/li>\n<li>Add search, sorting, pagination, and column filters<\/li>\n<li>Use dropdown, multi-select, checkbox, and radio-style filters<\/li>\n<li>Export table data to CSV, copy it, or print it<\/li>\n<li>Reorder columns and control column visibility<\/li>\n<li>Create bar, line, area, pie, and Gantt charts with ECharts<\/li>\n<li>Customize table controls, labels, layout, and display options<\/li>\n<li>Start with light frontend styles that are easy to override with CSS<\/li>\n<li>Import compatible table definitions from JSON<\/li>\n<\/ul>\n\n<h3>Third-Party Libraries<\/h3>\n\n<p>This plugin bundles the following libraries and admin thumbnail assets:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/datatables.net\/\">DataTables<\/a> v2.3.8 - MIT License<\/li>\n<li>DataTables Buttons v3.2.6 - MIT License<\/li>\n<li>DataTables ColReorder v2.1.2 - MIT License<\/li>\n<li><a href=\"https:\/\/select2.org\/\">Select2<\/a> v4.1.0-rc.0 - MIT License<\/li>\n<li><a href=\"https:\/\/echarts.apache.org\/\">ECharts<\/a> v6.0.0 - Apache License 2.0<\/li>\n<\/ul>\n\n<p>Source code and uncompressed distribution files for the bundled compressed assets are available here:<\/p>\n\n<ul>\n<li>DataTables v2.3.8 source: https:\/\/github.com\/DataTables\/DataTablesSrc\/tree\/2.3.8<\/li>\n<li>DataTables v2.3.8 distribution files: https:\/\/cdn.datatables.net\/2.3.8\/<\/li>\n<li>DataTables Buttons v3.2.6 source: https:\/\/github.com\/DataTables\/Buttons\/tree\/3.2.6<\/li>\n<li>DataTables Buttons v3.2.6 distribution files: https:\/\/cdn.datatables.net\/buttons\/3.2.6\/<\/li>\n<li>DataTables ColReorder v2.1.2 source: https:\/\/github.com\/DataTables\/ColReorder\/tree\/2.1.2<\/li>\n<li>DataTables ColReorder v2.1.2 distribution files: https:\/\/cdn.datatables.net\/colreorder\/2.1.2\/<\/li>\n<li>Select2 v4.1.0-rc.0 source: https:\/\/github.com\/select2\/select2\/tree\/4.1.0-rc.0<\/li>\n<li>Select2 v4.1.0-rc.0 uncompressed JavaScript: https:\/\/raw.githubusercontent.com\/select2\/select2\/4.1.0-rc.0\/dist\/js\/select2.js<\/li>\n<li>Select2 v4.1.0-rc.0 uncompressed CSS: https:\/\/raw.githubusercontent.com\/select2\/select2\/4.1.0-rc.0\/dist\/css\/select2.css<\/li>\n<li>ECharts v6.0.0 source: https:\/\/github.com\/apache\/echarts\/tree\/6.0.0<\/li>\n<li>ECharts v6.0.0 uncompressed JavaScript: https:\/\/raw.githubusercontent.com\/apache\/echarts\/6.0.0\/dist\/echarts.js<\/li>\n<li>Apache ECharts example thumbnail source files: https:\/\/echarts.apache.org\/examples\/data\/thumb\/<\/li>\n<li>Apache ECharts examples source: https:\/\/github.com\/apache\/echarts-examples<\/li>\n<\/ul>\n\n<p>Additional third-party license and notice text is included in assets\/vendor\/THIRD-PARTY-LICENSES.txt.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>baratables<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the Plugins menu in WordPress.<\/li>\n<li>Go to Tables in the admin menu and create your first table.<\/li>\n<li>Use the shortcode <code>[bara_table id=\"your-table-slug\"]<\/code> to embed it.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20data%20sources%20are%20supported%3F\"><h3>What data sources are supported?<\/h3><\/dt>\n<dd><p>CSV files from the media library, manual data entry via the admin editor, WordPress content, and external MySQL\/MariaDB databases.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20a%20chart%3F\"><h3>How do I add a chart?<\/h3><\/dt>\n<dd><p>Create a table first, then go to Charts and create a new chart linked to that table. Use <code>[bara_chart id=\"your-chart-slug\"]<\/code> to embed it.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20table%20appearance%3F\"><h3>Can I customize the table appearance?<\/h3><\/dt>\n<dd><p>Yes. The Options tab provides controls for striping, hover effects, borders, compact mode, pagination style, button labels, search text, and info display. You can also arrange layout zones for full control over where controls appear.<\/p><\/dd>\n<dt id=\"can%20i%20style%20baratables%20with%20custom%20css%3F\"><h3>Can I style BaraTables with custom CSS?<\/h3><\/dt>\n<dd><p>Yes. BaraTables keeps its frontend design intentionally light so your theme can stay in control. You can use your theme stylesheet, the Site Editor, or additional custom CSS to adjust colors, spacing, typography, borders, and button styles.<\/p><\/dd>\n<dt id=\"where%20can%20i%20see%20examples%3F\"><h3>Where can I see examples?<\/h3><\/dt>\n<dd><p>Visit https:\/\/ktisisweb.com\/baratables\/ for screenshots, feature notes, and styling guidance.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Improved date formatting controls for WordPress date columns, including support for the site's default date format.<\/li>\n<li>Hardened frontend table and chart configuration output.<\/li>\n<li>Improved internal table and chart lookups for better admin performance.<\/li>\n<li>Switched generated chart IDs to WordPress-native UUIDs.<\/li>\n<li>Cleaned the release package for WordPress.org distribution.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Create searchable, sortable WordPress tables and charts from CSV files, manual rows, posts, or external databases.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/en-za.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/298967","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/en-za.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/en-za.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/en-za.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=298967"}],"author":[{"embeddable":true,"href":"https:\/\/en-za.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/nathannoom"}],"wp:attachment":[{"href":"https:\/\/en-za.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=298967"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/en-za.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=298967"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/en-za.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=298967"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/en-za.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=298967"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/en-za.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=298967"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/en-za.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=298967"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}