✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount
✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount
✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount
✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount
✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount
✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount
✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount
✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount
✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount
✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount

SleekPixel for Ninja Tables data sources

Ninja Tables stores every table as a ninja-table custom post type with row data in ninja_table_rows. SleekPixel reads the same store, then renders the table title, row count, source type, and last-synced timestamp into a branded image whenever an editor saves or a cron sync runs.

♾️ Lifetime License available

SleekPixel example output for Ninja Tables

Datasets are the headline. Render them like one.

Ninja Tables registers a custom post type called ninja-table and stores rows separately in its own table, wp_wpoptn_ninja_table_items on most installs, keyed by table_id. Each table also carries postmeta like _ninja_table_settings with the data-source type, refresh interval, and a last-synced timestamp.

Embedding a Ninja Tables table in a post is usually done with [ninja_tables id="14"] or the Gutenberg block. Either way, the post content references a table id, not the data itself. Default OG generators see only the shortcode markup, not the table behind it.

SleekPixel parses the shortcode or block attribute, reads the table id, looks up the post title of that ninja-table CPT, counts rows in the items table, and reads the last-synced meta. Those four fields drive the OG card. When the data source refreshes overnight, the OG image regenerates the next morning and the share preview stamps the new date.

Workflow

From data-source refresh to social card

1

Find the embedded table id

SleekPixel scans both [ninja_tables id="X"] shortcodes and the Ninja Tables Gutenberg block attribute to locate which CPT entry the post references.
2

Pull title, rows, source

It loads the matching ninja-table post, counts rows in the items table, and reads _ninja_table_settings for source type and last-sync time.
3

Render the OG image

Those fields fill the SleekPixel template: title as headline, row count as stat block, source type as badge, last-sync as footer line, all styled to your brand.
4

Hook saves and syncs

SleekPixel listens for save_post_ninja-table and the Ninja Tables refresh action, then regenerates the card for every post embedding that id.

Output

Sample Ninja Tables card

Generated from a real Ninja Tables CPT entry: table title, row count, data-source type, and last-synced timestamp from postmeta.

Format: PNG, OG + Twitter card Dimensions: 1200 × 630
SleekPixel example output for Ninja Tables

Comparison

Default theme OG image vs SleekPixel for Ninja Tables

Default theme OG image

  • Default OG image shows the post title only, never the dataset behind the embed
  • Refresh-from-Google-Sheet runs at 3 a.m. but the share preview never updates to match
  • Five posts embedding the same table all share an identical, generic theme card
  • Header row and row count never make it into the social preview at any size
  • Sharing a deep-link to a dataset feels indistinguishable from sharing the homepage

SleekPixel

  • Reads the ninja-table CPT title, row count, and source type per embed
  • Hooks save_post_ninja-table and the data-source refresh action together
  • Renders the data-source type (CSV, Google Sheet, SQL) as a badge on the card
  • Supports both shortcode and Gutenberg block embeds in the same post
  • Pulls last-synced timestamp from _ninja_table_settings postmeta

Features

What SleekPixel gives you for Ninja Tables

Source-aware badges

Google Sheet, CSV, SQL, manual, or REST: the card shows the source type as a colored badge so the share signals where the data lives, not just that there is data.

Live row count

Row count comes from COUNT(*) on the items table at render time, so a freshly synced Google Sheet that added 200 rows shows the right number in the OG card.

Last-synced stamp

The _ninja_table_settings postmeta carries the last-synced unix timestamp. SleekPixel formats it relative to now and renders it as the footer line on the card.

Use cases

Where Ninja Tables sites get the biggest lift

Open-data portals

Government and NGO sites publish dozens of refreshing datasets. Per-table OG images make every link share recognizable as the specific dataset shown.

Investor and SaaS pages

Pricing comparisons, funding trackers, and benchmark tables drive most of the inbound shares. Each becomes its own preview, not a generic logo.

Edu and reference sites

Course materials and reference tables share across student channels. SleekPixel makes every embed identifiable in a way the default theme card cannot.

The bigger picture

Why Ninja Tables embeds need their own preview

Ninja Tables is rarely about presenting static information. It is usually a way to embed something that updates, like a leaderboard, a Google Sheet, or a sync from an external API. The point of the share is the freshness, not the content of the surrounding post.

A default OG image that shows the site logo throws away that point. A SleekPixel card that names the dataset, counts the current rows, and stamps the last refresh signals exactly the freshness the embed is meant to deliver. The fields are already in the database.

Ninja Tables already writes the source type, the sync interval, and the timestamp. SleekPixel just reads from where the plugin already writes and turns each save into a new image. Over a year of weekly refreshes, that is fifty-two updated previews that the team did not have to render by hand.

Across forty active tables, that is two thousand individual social cards keeping themselves current with zero designer involvement.

Questions

Common questions about SleekPixel for Ninja Tables

Yes. The Pro data-source extension stores its config in the same _ninja_table_settings postmeta. SleekPixel reads the source type, source URL, and refresh interval from that meta and surfaces them as template fields, so you can show a 'Google Sheet' or 'SQL' badge depending on the data source.

 

SleekPixel parses both. The Gutenberg block stores the table id in its table_id attribute and the shortcode stores it in the id attribute. Either way, the same lookup runs and the same fields populate the OG image.

 

Ninja Tables fires an action on every successful refresh. SleekPixel hooks that action, identifies every post that embeds the refreshed table id, and queues an OG image regeneration in the background so the morning shares already show the new row count.

 

Yes. SleekPixel exposes the first row of data and any cell by row/column index as template fields. You can render the header row, the first three cells of the top row, or a specific column like 'Total' at the bottom of the dataset.

 

Use the Ninja Tables category taxonomy or a custom field on the CPT entry as a routing field. SleekPixel templates can switch accent color, badge text, and layout per category without duplicating the template file.

 

No. Regeneration runs asynchronously through Action Scheduler. The save returns immediately and the image rebuilds in the next queue tick, typically within a few seconds, with no blocking on the admin save action.

 

By default, SleekPixel skips drafts and only renders for published tables, since drafts are not shareable in public posts. You can opt in to draft rendering for staging environments through the integration settings page.

 

Locally first, then your existing CDN picks up the file from wp-content/uploads/sleek-pixel/ like any other media. There is no external SleekPixel CDN and no per-render fee.

 

Pricing

More than 1000+
happy customers

Explore our flexible licensing options tailored to your needs. Upgrade your license anytime to access more features, or opt for a lifetime license for ongoing value, including lifetime updates and lifetime support. Our hassle-free upgrade process ensures that our platform can grow with you, starting from whichever plan you choose.

Starter

€79

EUR

per year

  • 3 websites
  • 1 year of updates
  • 1 year of support

Pro

€149

EUR

per year

  • Unlimited websites
  • 1 year of updates
  • 1 year of support

Lifetime ♾️

Most popular

€249

EUR

once

  • Unlimited websites
  • Lifetime updates
  • Lifetime support

...or get the Bundle Deal
and save €250 🎁

The Bundle (unlimited sites)

Pay once, own it forever

Elevate your WordPress site with our exclusive plugin bundle that includes all of our premium plugins in one package. Enjoy lifetime updates and lifetime support. Save significantly compared to buying plugins individually.

What’s included

  • SleekAI

  • SleekByte

  • SleekMotion

  • SleekPixel

  • SleekRank

  • SleekView