Title: GT Table Block
Author: Birgit Pauli-Haack
Published: <strong>May 4, 2026</strong>
Last modified: May 6, 2026

---

Search plugins

![](https://ps.w.org/gt-table-block/assets/banner-772x250.png?rev=3524138)

![](https://ps.w.org/gt-table-block/assets/icon-256x256.png?rev=3524138)

# GT Table Block

 By [Birgit Pauli-Haack](https://profiles.wordpress.org/bph/)

[Download](https://downloads.wordpress.org/plugin/gt-table-block.zip)

[Live Preview](https://wordpress.org/plugins/gt-table-block/?preview=1)

 * [Details](https://wordpress.org/plugins/gt-table-block/#description)
 * [Reviews](https://wordpress.org/plugins/gt-table-block/#reviews)
 *  [Installation](https://wordpress.org/plugins/gt-table-block/#installation)
 * [Development](https://wordpress.org/plugins/gt-table-block/#developers)

 [Support](https://wordpress.org/support/plugin/gt-table-block/)

## Description

GT Table Block extends the built-in `core/table` block with optional features that
compose cleanly — each feature is an independent toggle, not a block style, so any
combination can be active on the same table.

**Available in this release:**

 * **Sticky header row** — the `<thead>` row pins to the top of the viewport while
   the table body scrolls. Includes a numeric offset control for sites with a fixed
   admin bar or site header. Pure CSS at runtime (no frontend JavaScript). The sticky
   background is an opaque CSS variable with full theme.json customization support(
   see FAQ below).
 * **Styled first column** — gives the first column the same visual weight as the
   header row (bold, optional themeable background) and adds `scope="row"` to those
   cells in the saved markup so screen readers announce them as row headers. Addresses
   Gutenberg core issue #1470 (open since 2017). Pure CSS for the styling; the a11y
   attribute is added at save time only, so the editor preview stays unchanged.

**Planned for future releases:**

 * Sticky first column for wide tables with horizontal scroll — v0.3.0.
 * Merge / unmerge cells via a block toolbar control — v0.4.0.

#### Why a variation, not a replacement block?

The plugin deliberately extends `core/table` rather than forking it, so existing
tables stay compatible with core as it evolves. Independent boolean attributes also
let any combination of features be active at once — which block styles (a mutually
exclusive radio group) cannot offer.

### Source code

Source code, build tools, issue tracker, and development log: https://github.com/
bph/gt-table-block

The plugin is built with `@wordpress/scripts` (see the repository’s README for build
instructions). Each tagged release on GitHub corresponds to the stable tag published
here.

## Installation

 1. Upload the plugin folder to `/wp-content/plugins/` or install via the Plugins screen.
 2. Activate through the **Plugins** menu.
 3. Insert the **Enhanced Table** variation from the block inserter, or convert an 
    existing Table block via the Block Settings panel.

## FAQ

### Does it replace the core Table block?

No. It registers a variation. Existing core Table blocks are unaffected until you
enable a feature toggle on them.

### Does it need frontend JavaScript?

No. Sticky header, header column styling, and sticky first column are pure CSS. 
Only the editor ships JS.

### Does it work with block themes?

Yes. It targets `core/table` and uses the `wp-block-table` class chain for specificity
without `!important`.

### How do I change the sticky header background color?

The sticky header is painted with an opaque background so body rows don’t show through
it. It resolves in this order:

 1. `--gt-sticky-header-bg` — a per-block or local override (wins over everything).
 2. `--wp--custom--gt-sticky-header-bg` — a theme.json `settings.custom` value.
 3. `Canvas` — the CSS system color (browser document background, adapts to light/dark
    mode).

**Theme-wide via theme.json (literal color):**

    ```
    { "settings": { "custom": { "gtStickyHeaderBg": "#f5f5f5" } } }
    ```

**Theme-wide via theme.json (reference a theme preset):**

    ```
    { "settings": { "custom": { "gtStickyHeaderBg": "var(--wp--preset--color--base)" } } }
    ```

The value is emitted into the CSS variable as-is, so any WP-generated preset works—`--
wp--preset--color--accent`, `--wp--preset--color--contrast-2`, or any palette slug
your theme registers.

In both cases WordPress serializes `settings.custom.gtStickyHeaderBg` as the CSS
variable `--wp--custom--gt-sticky-header-bg`, which the plugin reads as a fallback.

**Theme-wide via raw CSS in theme.json:**

    ```
    { "styles": { "css": ".wp-block-table.has-sticky-header { --gt-sticky-header-bg: var(--wp--preset--color--base); } " } }
    ```

**Per-block override:** add an inline style or Additional CSS class that sets `--
gt-sticky-header-bg` on the `<figure>`.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“GT Table Block” is open source software. The following people have contributed 
to this plugin.

Contributors

 *   [ Birgit Pauli-Haack ](https://profiles.wordpress.org/bph/)

[Translate “GT Table Block” into your language.](https://translate.wordpress.org/projects/wp-plugins/gt-table-block)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/gt-table-block/), check
out the [SVN repository](https://plugins.svn.wordpress.org/gt-table-block/), or 
subscribe to the [development log](https://plugins.trac.wordpress.org/log/gt-table-block/)
by [RSS](https://plugins.trac.wordpress.org/log/gt-table-block/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.2.0

 * New feature: **Styled first column**. Toggle in the Enhanced Table panel makes
   the first body/foot cells bold and adds `scope="row"` to them in the saved HTML
   for screen-reader semantics (Gutenberg #1470). Themeable background via the `--
   gt-header-column-bg` CSS variable.

#### 0.1.1

 * Documentation: shorter Short Description (Plugin Check 150-char limit), align
   GitHub README with readme.txt scope. No code changes.

#### 0.1.0

 * Initial release — sticky header row with optional offset control. Further features
   ship in subsequent releases.

## Meta

 *  Version **0.1.1**
 *  Last updated **2 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.6 or higher **
 *  Tested up to **6.9.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [block](https://wordpress.org/plugins/tags/block/)[block-editor](https://wordpress.org/plugins/tags/block-editor/)
   [gutenberg](https://wordpress.org/plugins/tags/gutenberg/)[table](https://wordpress.org/plugins/tags/table/)
 *  [Advanced View](https://wordpress.org/plugins/gt-table-block/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/gt-table-block/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/gt-table-block/reviews/)

## Contributors

 *   [ Birgit Pauli-Haack ](https://profiles.wordpress.org/bph/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/gt-table-block/)