{"id":298967,"date":"2026-06-13T19:47:19","date_gmt":"2026-06-13T19:47:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/baratables\/"},"modified":"2026-08-19T03:45:14","modified_gmt":"2026-08-19T03:45:14","slug":"baratables","status":"publish","type":"plugin","link":"https:\/\/test.wordpress.org\/plugins\/baratables\/","author":12118857,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.0","stable_tag":"1.3.0","tested":"7.0.4","requires":"6.4","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-08-19 03:45:14","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":551,"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"},"1.1.0":{"tag":"1.1.0","author":"nathan.noom","date":"2026-06-27 03:40:22"},"1.1.1":{"tag":"1.1.1","author":"nathan.noom","date":"2026-06-30 08:47:39"},"1.2.1":{"tag":"1.2.1","author":"nathan.noom","date":"2026-07-13 00:26:21"},"1.2.2":{"tag":"1.2.2","author":"nathan.noom","date":"2026-07-22 08:17:18"},"1.2.3":{"tag":"1.2.3","author":"nathan.noom","date":"2026-07-26 00:11:03"},"1.2.4":{"tag":"1.2.4","author":"nathan.noom","date":"2026-08-07 22:33:20"},"1.2.5":{"tag":"1.2.5","author":"nathan.noom","date":"2026-08-13 13:15:22"},"1.3.0":{"tag":"1.3.0","author":"nathan.noom","date":"2026-08-19 03:45:14"}},"upgrade_notice":{"1.3.0":"<p>New table and chart blocks, responsive stacking on small screens, PDF export, theme-matched colors with a custom accent, and faster table pages without jQuery. Fixes day-first dates, decimal-comma chart values, and silent external database edits.<\/p>","1.2.5":"<p>Broader and more accurate table imports, faster tables and chart-only pages, reliable saves, clear load errors, PHP 7.4 compatibility, and secure import validation.<\/p>","1.2.4":"<p>Adds radar, heatmap, and treemap charts.<\/p>","1.2.3":"<p>Security fixes: password-protected post content and post passwords could be displayed in a table. Also fixes date sorting, sticky posts, and Media tables.<\/p>","1.2.2":"<p>Includes a security fix for the table editor. Fixes category and tag filtering, Advanced Custom Fields columns, and settings lost when editing an external database connection. If you use row-level access control, open and re-save those tables: some show no rows until you do.<\/p>","1.2.1":"<p>Adds Excel export, five new chart types, saved table state, and scrolling and row-limit controls.<\/p>","1.1.1":"<p>&quot;Format as date&quot; works on every data source, front-end controls follow the site language, and shortcodes without an id no longer error on older WordPress. Includes a security fix for the table editor.<\/p>","1.1.0":"<p>Import tables from other plugins or spreadsheets, rename Table and Chart IDs, reorder manual rows, and use translation-ready headers. Includes fixes and security hardening.<\/p>","1.0.1":"<p>Maintenance release with improved date formatting controls and safer frontend output.<\/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":3653808,"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(), '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, 'stateSave' => true, 'autoWidth' => true, 'scrollX' => true, 'scrollY' => 0, 'scrollCollapse' => true, 'rowLimit' => 1000, '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', 'excel', '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' => 'horizontal_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, CSV and Excel export, 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;\\\">5<\\\/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;\\\">10<\\\/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 horizontal bar chart 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'); update_user_meta(1, 'show_admin_bar_front', 'false'); ?>\"},{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"}]}"}},"all_blocks":{"baratables\/table":{"name":"baratables\/table","title":"BaraTables Table"},"baratables\/chart":{"name":"baratables\/chart","title":"BaraTables Chart"}},"tagged_versions":["1.0.0","1.0.1","1.1.0","1.1.1","1.2.1","1.2.2","1.2.3","1.2.4","1.2.5","1.3.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3653808,"resolution":"1","location":"assets","locale":"","width":1440,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3653808,"resolution":"2","location":"assets","locale":"","width":1440,"height":2149},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3653808,"resolution":"3","location":"assets","locale":"","width":1440,"height":1200},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3653808,"resolution":"4","location":"assets","locale":"","width":1440,"height":1200},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3653808,"resolution":"5","location":"assets","locale":"","width":1077,"height":2049}},"screenshots":{"1":"Frontend chart generated from a BaraTables table.","2":"Frontend table with search, filters, CSV, Excel, and PDF export, column visibility, sorting, and pagination.","3":"The Options tab: per-table overrides, control toggles, layout builder, styling, and export buttons.","4":"Chart builder and chart-type gallery with all supported chart types.","5":"Responsive table on a phone: collapsed columns expand into a stacked row."}},"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=3653808","caption":"Frontend chart generated from a BaraTables table."},{"src":"https:\/\/ps.w.org\/baratables\/assets\/screenshot-2.png?rev=3653808","caption":"Frontend table with search, filters, CSV, Excel, and PDF export, column visibility, sorting, and pagination."},{"src":"https:\/\/ps.w.org\/baratables\/assets\/screenshot-3.png?rev=3653808","caption":"The Options tab: per-table overrides, control toggles, layout builder, styling, and export buttons."},{"src":"https:\/\/ps.w.org\/baratables\/assets\/screenshot-4.png?rev=3653808","caption":"Chart builder and chart-type gallery with all supported chart types."},{"src":"https:\/\/ps.w.org\/baratables\/assets\/screenshot-5.png?rev=3653808","caption":"Responsive table on a phone: collapsed columns expand into a stacked row."}],"raw_content":"<!--section=description-->\n<p>BaraTables builds interactive tables and charts from your site data. Use manual rows, CSV uploads, WordPress content, or an external MySQL\/MariaDB database, then publish with a shortcode or a block.<\/p>\n\n<p>Import a JSON, XML, HTML, CSV, TXT, or ZIP export from another table plugin or spreadsheet to rebuild a table.<\/p>\n\n<p>Tables can include search, sorting, pagination, filters, export buttons, responsive stacking, column visibility controls, and custom control layouts. Charts draw from any BaraTables table and embed with their own shortcode.<\/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>Embed with a shortcode or a block in the block editor<\/li>\n<li>Add search, sorting, pagination, and dropdown, multi-select, checkbox, or radio filters, including filtering by category or tag<\/li>\n<li>Export table data to CSV, Excel, or PDF, copy it, or print it<\/li>\n<li>Reorder columns and control column visibility<\/li>\n<li>Collapse wide tables into stacked, expandable rows on small screens<\/li>\n<li>Match your theme automatically: colors follow your theme's palette, with an optional custom accent color<\/li>\n<li>Restrict WordPress-content, CSV, and external-database rows by user role or user metadata<\/li>\n<li>Remember table state between visits, and control scrolling, column sizing, and row limits<\/li>\n<li>Create bar, horizontal bar, line, area, radar, pie, donut, treemap, scatter, bubble, heatmap, funnel, and Gantt charts with ECharts<\/li>\n<li>Light frontend styles that are easy to override with CSS<\/li>\n<li>Import an existing table from another plugin or a spreadsheet (JSON, XML, HTML, CSV, TXT, or ZIP)<\/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> v3.0.2 - MIT License<\/li>\n<li>DataTables Buttons v4.0.2 - MIT License<\/li>\n<li>DataTables ColReorder v3.0.1 - MIT License<\/li>\n<li>DataTables Responsive v4.0.2 - MIT License<\/li>\n<li><a href=\"https:\/\/select2.org\/\">Select2<\/a> v4.1.0-rc.0 - MIT License (admin editor pickers)<\/li>\n<li><a href=\"https:\/\/tom-select.js.org\/\">Tom Select<\/a> v2.6.2 - Apache License 2.0 (front-end dropdown filters)<\/li>\n<li><a href=\"https:\/\/stuk.github.io\/jszip\/\">JSZip<\/a> v3.10.1 - MIT License<\/li>\n<li><a href=\"http:\/\/pdfmake.org\/\">pdfmake<\/a> v0.2.23 - MIT License (bundles the Roboto font family - Apache License 2.0)<\/li>\n<li><a href=\"https:\/\/echarts.apache.org\/\">ECharts<\/a> v6.1.0 - Apache License 2.0<\/li>\n<li>FileSaver.js - MIT License (bundled inside DataTables Buttons)<\/li>\n<li>pako - MIT License (bundled inside JSZip)<\/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 v3.0.2 source: https:\/\/github.com\/DataTables\/DataTablesSrc\/tree\/3.0.2<\/li>\n<li>DataTables v3.0.2 distribution files: https:\/\/cdn.datatables.net\/3.0.2\/<\/li>\n<li>DataTables Buttons v4.0.2 source: https:\/\/github.com\/DataTables\/Buttons\/tree\/4.0.2<\/li>\n<li>DataTables Buttons v4.0.2 distribution files: https:\/\/cdn.datatables.net\/buttons\/4.0.2\/<\/li>\n<li>DataTables ColReorder v3.0.1 source: https:\/\/github.com\/DataTables\/ColReorder\/tree\/3.0.1<\/li>\n<li>DataTables ColReorder v3.0.1 distribution files: https:\/\/cdn.datatables.net\/colreorder\/3.0.1\/<\/li>\n<li>DataTables Responsive v4.0.2 source: https:\/\/github.com\/DataTables\/Responsive\/tree\/4.0.2<\/li>\n<li>DataTables Responsive v4.0.2 distribution files: https:\/\/cdn.datatables.net\/responsive\/4.0.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>Tom Select v2.6.2 source: https:\/\/github.com\/orchidjs\/tom-select\/tree\/v2.6.2<\/li>\n<li>Tom Select v2.6.2 distribution files: https:\/\/cdn.jsdelivr.net\/npm\/tom-select@2.6.2\/dist\/<\/li>\n<li>JSZip v3.10.1 source: https:\/\/github.com\/Stuk\/jszip\/tree\/v3.10.1<\/li>\n<li>JSZip v3.10.1 uncompressed JavaScript: https:\/\/raw.githubusercontent.com\/Stuk\/jszip\/v3.10.1\/dist\/jszip.js<\/li>\n<li>pdfmake v0.2.23 source: https:\/\/github.com\/bpampuch\/pdfmake\/tree\/0.2.23<\/li>\n<li>pdfmake v0.2.23 distribution files: https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pdfmake\/0.2.23\/<\/li>\n<li>FileSaver.js v1.3.3 source: https:\/\/github.com\/eligrey\/FileSaver.js\/tree\/1.3.3<\/li>\n<li>pako source: https:\/\/github.com\/nodeca\/pako<\/li>\n<li>ECharts v6.1.0 source: https:\/\/github.com\/apache\/echarts\/tree\/6.1.0<\/li>\n<li>ECharts v6.1.0 uncompressed JavaScript: https:\/\/raw.githubusercontent.com\/apache\/echarts\/6.1.0\/dist\/echarts.js<\/li>\n<li>BaraTables ECharts bundle entry and build command: https:\/\/github.com\/trinadin\/baratables\/blob\/main\/tools\/echarts-entry.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<!--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, manual data entry, WordPress content, and external MySQL\/MariaDB databases.<\/p><\/dd>\n<dt id=\"which%20table%20plugin%20exports%20can%20i%20import%3F\"><h3>Which table plugin exports can I import?<\/h3><\/dt>\n<dd><p>For TablePress, use a single-table JSON export. Ninja Tables classic and drag-and-drop JSON exports are supported; export an externally connected table as CSV. WP Table Builder XML or CSV, Visualizer CSV, Supsystic JSON or CSV, League Table XML, and data-only CSV from wpDataTables and Tablesome also import, as do HTML tables. A ZIP with multiple tables imports the first supported table and reports how many were found.<\/p>\n\n<p>Imports rebuild the table data and compatible display settings. Plugin-specific styling, formulas, shortcodes, charts, and external data connections are not carried over. Export XLS or XLSX files as CSV first.<\/p>\n\n<p>An upload or pasted import can be up to 5 MB. ZIP files can contain up to 50 entries, with each entry up to 5 MB and up to 20 MB total when expanded.<\/p><\/dd>\n<dt id=\"how%20many%20rows%20can%20a%20table%20load%3F\"><h3>How many rows can a table load?<\/h3><\/dt>\n<dd><p>Each table loads up to 1,000 rows by default. The Options tab lets you choose a limit from 1 to 10,000 rows, applying to tables and charts on every data source.<\/p><\/dd>\n<dt id=\"can%20i%20link%20to%20a%20filtered%20view%20of%20a%20table%3F\"><h3>Can I link to a filtered view of a table?<\/h3><\/dt>\n<dd><p>Yes. Filtering or searching updates the page address as you go, so you can copy and share that exact view. You can also build the link yourself with <code>btbl_filter[column-slug]<\/code>, <code>btbl_search<\/code>, and <code>btbl_search_cols<\/code>.<\/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, borders, compact mode, pagination style, button labels, search text, and info display, and layout zones control 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 ships minimal frontend styles so your theme stays in control. Adjust colors, spacing, typography, and buttons with your theme stylesheet, the Site Editor, or custom CSS.<\/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, or use the Live Preview button on the WordPress.org plugin page for a temporary interactive demo.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.0<\/h4>\n\n<p>New:<\/p>\n\n<ul>\n<li>New block editor blocks: add any table or chart from the BaraTables block picker instead of pasting a shortcode.<\/li>\n<li>Wide tables can collapse into stacked, expandable rows on small screens.<\/li>\n<li>Export any table to PDF with a new Export PDF button.<\/li>\n<li>Tables match your theme automatically: colors follow your theme's palette, with an optional custom accent color per table.<\/li>\n<\/ul>\n\n<p>Improvements:<\/p>\n\n<ul>\n<li>Table pages no longer load jQuery, and dropdown filters use a lighter picker, so pages with tables load faster.<\/li>\n<li>The table engine is now DataTables 3; pages with export buttons load fewer files.<\/li>\n<li>Auto-built dropdown and checkbox filters cap at 250 options, so a near-unique column can no longer make the page unresponsive.<\/li>\n<li>The editor's Options tab is reorganized with clearer wording, and every field shows its default until you change it.<\/li>\n<li>Tables and charts work better with screen readers: proper column headers, an announced optional caption, labelled charts, and a readable fallback when JavaScript is off.<\/li>\n<li>Publishing a table for the first time shows the shortcode and block to embed it with.<\/li>\n<\/ul>\n\n<p>Fixes:<\/p>\n\n<ul>\n<li>Day-first dates such as 25\/12\/2026 now format correctly with \"Format as date\".<\/li>\n<li>Chart values written with a decimal comma (1.234,56) plot at the correct magnitude.<\/li>\n<li>Tab-delimited files import as separate columns instead of one long column.<\/li>\n<li>An invalid external database edit no longer silently keeps the previous connection, and clearing every field now removes the connection.<\/li>\n<li>Search limited to chosen columns follows columns you move by dragging.<\/li>\n<li>The settings gear no longer appears on a switched-off control, such as Fixed scroll height, when its inner option is still checked.<\/li>\n<li>In the layout builder, drop zones sit where their labels say instead of spreading across one row.<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<p>New:<\/p>\n\n<ul>\n<li>Imports WP Table Builder XML, Ninja Tables drag-and-drop JSON, Visualizer CSV, Supsystic JSON or CSV, and League Table XML exports.<\/li>\n<li>Reads table exports from HTML and ZIP files.<\/li>\n<\/ul>\n\n<p>Improvements:<\/p>\n\n<ul>\n<li>Chart-only pages load faster and large-table searches stay more responsive.<\/li>\n<li>The chart editor searches table choices as you type, keeping it fast on sites with many tables.<\/li>\n<\/ul>\n\n<p>Fixes:<\/p>\n\n<ul>\n<li>Empty or incomplete Ninja Tables exports no longer become a live table of WordPress posts.<\/li>\n<li>Quoted commas and multiline headings no longer break semicolon-delimited imports.<\/li>\n<li>Hidden columns, footer values, intentional blank rows, and nested cell values are preserved instead of discarded.<\/li>\n<li>A failed import no longer leaves an incomplete published table behind.<\/li>\n<li>The plugin activates normally on PHP 7.4 through PHP 8.1.<\/li>\n<li>A failed table or chart save keeps its previous data, ID, and linked charts together.<\/li>\n<li>Duplicating the same table or chart more than once gives every copy its own ID.<\/li>\n<li>Missing CSV files and external database failures show a clear error instead of looking like an empty table.<\/li>\n<li>If an interactive table or chart script fails to load, the loading screen clears and shows the available table or an error.<\/li>\n<li>Renaming a Table ID no longer removes backslashes from linked chart names.<\/li>\n<li>Manual column headings saved by early versions follow the site language after a direct upgrade.<\/li>\n<\/ul>\n\n<p>Security:<\/p>\n\n<ul>\n<li>Validates the contents of table import uploads before processing them.<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Adds radar, heatmap, and treemap charts.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<p>Improvements:<\/p>\n\n<ul>\n<li>Fixed scroll height is now a Table controls option, with its height and collapse settings inside. Existing scroll heights carry over.<\/li>\n<li>Table wording follows your site's language: the search label, the \"Show ... entries\" selector, the filters heading, and the result summary. This includes tables you have already saved, and keeps any wording you typed yourself.<\/li>\n<li>Tables load without a flash of unstyled content.<\/li>\n<li>Keyboard and screen reader support: labelled filter controls and option groups, Enter or Space to open the settings gear, focus outlines on taxonomy chips, and arrow keys to arrange the table layout.<\/li>\n<li>Pages with a table and its chart, or the same table twice, load faster on large tables.<\/li>\n<li>The \"Clear filters\" and \"Edit Table\" buttons are styled consistently on any theme.<\/li>\n<\/ul>\n\n<p>Security:<\/p>\n\n<ul>\n<li>Password-protected post content is withheld from visitors who have not entered the password.<\/li>\n<li>Post passwords cannot be displayed as a column, including through an imported file.<\/li>\n<\/ul>\n\n<p>Fixes:<\/p>\n\n<ul>\n<li>Hiding a column's heading keeps the custom heading you typed.<\/li>\n<li>Sticky posts are excluded, so a table stays within its row limit.<\/li>\n<li>Column filters follow their column when a visitor reorders columns.<\/li>\n<li>Date columns sort by date, including columns with empty cells.<\/li>\n<li>The Column visibility button reveals columns hidden in the table setup.<\/li>\n<li>Custom meta keys with capital letters or dots (such as Price_USD) match your data.<\/li>\n<li>Media tables list your attachments.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<p>New:<\/p>\n\n<ul>\n<li>Row-level access control on Custom WP Query tables.<\/li>\n<\/ul>\n\n<p>Fixes:<\/p>\n\n<ul>\n<li>Filtering by category or tag.<\/li>\n<li>Pages using Advanced Custom Fields Post Object, Relationship, Taxonomy, or Repeater columns load correctly, and those columns show their title, name, or contents.<\/li>\n<li>Manual data grids hold up to 25,000 cells, and the editor tells you when your server's form-field limit is too low for a grid that size.<\/li>\n<li>Two tables on the same page each keep their own filters in the shareable link.<\/li>\n<li>An import that fails to save can be retried without uploading the file again.<\/li>\n<li>Importing a large table keeps more of its rows and columns.<\/li>\n<li>Ninja Tables exports apply their saved search, sorting, and pagination settings.<\/li>\n<li>Editing an external database connection keeps your column and filter setup.<\/li>\n<li>Saved table state keeps sorting, search, page, and page length between visits.<\/li>\n<li>A restored search respects the columns you set as searchable.<\/li>\n<li>\"Value overrides\" apply to CSV and external database tables.<\/li>\n<li>\"Format as date\" is available on CSV, external database, manual, and custom field columns.<\/li>\n<li>Date columns show the time of day, and timestamps use your site's timezone.<\/li>\n<li>Blank lines in a CSV file are skipped.<\/li>\n<li>Custom WP Query tables load up to the row limit you set.<\/li>\n<li>On CSV and external database tables, row-level access control shows every row a visitor may see, even when the table has more rows than the limit.<\/li>\n<li>Shareable filter links work for a value of 0.<\/li>\n<li>Unnamed columns from a headerless CSV follow the site language.<\/li>\n<li>The editor preview uses the same export button labels as the published table.<\/li>\n<li>Creating a table from an import opens that table's editor.<\/li>\n<\/ul>\n\n<p>Improvements:<\/p>\n\n<ul>\n<li>A table loads only the export, column-reorder, and dropdown-filter libraries it uses, cutting about 265KB from a typical page.<\/li>\n<li>Large tables sort, page, and filter faster.<\/li>\n<li>The term picker lists the first 200 terms of a taxonomy, plus any you have already selected.<\/li>\n<li>The \"Strict matching\" filter option has been removed. Filters match whole values exactly.<\/li>\n<li>A column order set by dragging applies to the current visit only.<\/li>\n<\/ul>\n\n<p>Security:<\/p>\n\n<ul>\n<li>A column heading taken from a CSV file's header row could run script in the table editor. Column headings are now escaped everywhere they appear.<\/li>\n<li>Table and chart posts are no longer listed by the REST API. Anonymous requests could retrieve their ids, titles, and slugs.<\/li>\n<li>An external database table with no columns selected no longer publishes the column holding its access tokens.<\/li>\n<li>Row-level access control was accepted but not applied on manual-data tables. The setting has been removed there.<\/li>\n<li>Changing a table's data source could leave row-level access control switched on but unenforced, publishing rows it was set to hide. It now applies only to the source it was set up for, and a table whose saved settings cannot be enforced shows no rows until you re-save it.<\/li>\n<li>New tables default to hiding restricted rows from logged-out visitors. Existing tables keep their saved setting.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Export a table to Excel with a new table button option.<\/li>\n<li>Five new chart types: horizontal bar, donut, scatter, bubble, and funnel, each with a preview in the chart-type gallery.<\/li>\n<li>Remember table state: a table can keep its sorting, search, page, and page length.<\/li>\n<li>New table controls for horizontal scrolling, vertical scroll height, and column auto-sizing.<\/li>\n<li>Configurable row loading limit per table (default 1,000 rows, up to 10,000).<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<p>Fixes:<\/p>\n\n<ul>\n<li>\"Format as date\" displays the formatted date (e.g. \"Mar 18, 2026\") on manual data columns.<\/li>\n<li>Plain numbers such as a year or a count are not read as dates.<\/li>\n<li>A [bara_table] or [bara_chart] shortcode used without an id shows a \"not found\" message on WordPress 6.2 through 6.4.<\/li>\n<li>Importing a file with only a header row, or no rows, creates an empty table.<\/li>\n<li>Front-end table controls (export buttons, column-visibility menu, \"Search in\") and the CSV file picker follow the site language.<\/li>\n<\/ul>\n\n<p>Security:<\/p>\n\n<ul>\n<li>Hardened the table editor's \"Column heading\" field against script injection (XSS).<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<p>New:<\/p>\n\n<ul>\n<li>Import a table from another table plugin or a spreadsheet: upload a JSON or XML table export, or a CSV file, and BaraTables creates a matching table for you.<\/li>\n<li>Editable Table ID and Chart ID: rename a table's or chart's shortcode ID after it is created. Linked charts update automatically, and a notice reminds you to update any [bara_table] \/ [bara_chart] shortcodes already placed in your content.<\/li>\n<li>Reorder manual-data rows directly in the editor with up and down controls.<\/li>\n<li>Manual-table column headers are now translation-ready and follow the site language.<\/li>\n<\/ul>\n\n<p>Improvements:<\/p>\n\n<ul>\n<li>Wide manual-data tables now scroll horizontally while keeping the row number and row controls in view.<\/li>\n<li>Paste tabular data straight from a spreadsheet into the manual-data grid.<\/li>\n<li>Smoother admin experience: one-click copy for shortcodes and IDs, a Show\/Hide help text preference, and fewer page reloads while configuring a source.<\/li>\n<\/ul>\n\n<p>Fixes:<\/p>\n\n<ul>\n<li>Numeric columns sort numerically (e.g. 3.15, 3.2, 3.9 in numeric order).<\/li>\n<li>Far-future dates display correctly.<\/li>\n<\/ul>\n\n<p>Security:<\/p>\n\n<ul>\n<li>Hardened admin request handling and input validation.<\/li>\n<\/ul>\n\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>Security: hardened frontend table and chart configuration output.<\/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:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/298967","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=298967"}],"author":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/nathannoom"}],"wp:attachment":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=298967"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=298967"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=298967"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=298967"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=298967"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=298967"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}