{"id":317661,"date":"2026-06-17T16:11:22","date_gmt":"2026-06-17T16:11:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/waffledb\/"},"modified":"2026-06-17T16:41:38","modified_gmt":"2026-06-17T16:41:38","slug":"waffledb","status":"publish","type":"plugin","link":"https:\/\/ml.wordpress.org\/plugins\/waffledb\/","author":15352253,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.5","stable_tag":"1.5","tested":"7.0","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"WaffleDB","header_author":"Masahiko Tokita <tokitam@tokita.net>","header_description":"Create and manage custom database tables with flexible columns, CRUD forms, REST API, CSV export, and shortcode support \u2014 no coding required.","assets_banners_color":"","last_updated":"2026-06-17 16:41:38","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/tokita.net\/waffledb\/","header_author_uri":"https:\/\/tokita.net","rating":0,"author_block_rating":0,"active_installs":0,"downloads":34,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.5":{"tag":"1.5","author":"tokitam","date":"2026-06-17 16:41:38"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3576093,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3576093,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.5"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Edit data","2":"Table list","3":"Column list"}},"plugin_section":[],"plugin_tags":[153,10609,361,201155],"plugin_category":[42,59],"plugin_contributors":[267588],"plugin_business_model":[],"class_list":["post-317661","plugin","type-plugin","status-publish","hentry","plugin_tags-database","plugin_tags-db","plugin_tags-form","plugin_tags-no-code","plugin_category-contact-forms","plugin_category-utilities-and-tools","plugin_contributors-tokitam","plugin_committers-tokitam"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/waffledb\/assets\/icon-128x128.png?rev=3576093","icon_2x":"https:\/\/ps.w.org\/waffledb\/assets\/icon-256x256.png?rev=3576093","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>WaffleDB is a no-code database management plugin for WordPress. You can define custom tables with any column structure directly from the admin dashboard, then create, read, update, and delete records through a built-in web interface or via REST API.<\/p>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li>Create custom tables with a flexible column structure<\/li>\n<li>CRUD operations (create, read, update, delete) via web interface<\/li>\n<li>Role-based access control (read \/ write \/ update \/ delete per table)<\/li>\n<li>11 column types: text, textarea, int, float, date, datetime, URL, image URL, image upload, file upload, YouTube<\/li>\n<li>CSV export<\/li>\n<li>REST API with API token authentication<\/li>\n<li>Shortcode support: <code>[waffledb table_id=\"X\"]<\/code> and <code>[waffledb_item table_id=\"X\" item_id=\"Y\"]<\/code><\/li>\n<li>DataTables integration for large datasets (switches to AJAX for 1,000+ records)<\/li>\n<\/ul>\n\n<p><strong>Limits<\/strong><\/p>\n\n<ul>\n<li>Up to 6 tables per site<\/li>\n<li>Up to 15 columns per table<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>waffledb<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install it directly through the WordPress plugin screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Go to <strong>WaffleDB<\/strong> in the admin menu to create your first table.<\/li>\n<li>Add columns to define your data structure, then start entering records.<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>1.5<\/h4>\n\n<ul>\n<li>Security: escaped shortcode\/callback return values, including the WP_List_Table column callbacks rendered by WordPress<\/li>\n<li>Security: added a delete-permission check to the front-end detail view before deleting a record<\/li>\n<li>Security: hardened nonce and capability checks across admin AJAX handlers and form controllers<\/li>\n<li>Security: switched dynamic SQL identifiers to the %i placeholder with strict identifier\/type allowlist validation, and parameterized values with prepare()<\/li>\n<li>Added email column type<\/li>\n<li>Fixed malformed SHOW TABLES queries (missing closing quote) in the activation\/migration routine<\/li>\n<\/ul>\n\n<h4>1.2<\/h4>\n\n<ul>\n<li>Added float (double) column type<\/li>\n<li>Fixed CSV download returning empty content<\/li>\n<li>Fixed CSV download encoding to UTF-8<\/li>\n<li>Fixed API syntax errors<\/li>\n<li>Improved component type display names<\/li>\n<li>Removed deprecated load_plugin_textdomain() call (auto-loaded since WordPress 4.6)<\/li>\n<li>Code and directory structure refactoring<\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>Corrections after review<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<p><em>Release Date - 30 March 2024<\/em><\/p>\n\n<ul>\n<li>First Release<\/li>\n<\/ul>","raw_excerpt":"Create and manage custom database tables in WordPress. Flexible columns, CRUD forms, REST API, CSV export, and shortcodes. No coding required.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/317661","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=317661"}],"author":[{"embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/tokitam"}],"wp:attachment":[{"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=317661"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=317661"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=317661"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=317661"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=317661"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=317661"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}