{"id":395196,"date":"2026-10-31T12:51:30","date_gmt":"2026-10-31T12:51:30","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/bulk-editor-pro-spreadsheet-bulk-editor-for-woocommerce\/"},"modified":"2026-10-31T13:42:59","modified_gmt":"2026-10-31T13:42:59","slug":"rafgrid","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/rafgrid\/","author":17960830,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.1.0","stable_tag":"2.1.0","tested":"7.1.4","requires":"6.5","requires_php":"8.3","requires_plugins":null,"header_name":"Rafgrid \u2013 Spreadsheet Bulk Editor for WooCommerce","header_author":"Raffi Hakobyan","header_description":"Bulk edit posts, pages, products and any post type in a fast spreadsheet. Filters, bulk edits, WooCommerce mode, views, CSV, undo.","assets_banners_color":"7e7ba0","last_updated":"2026-10-31 13:42:59","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/raf.am","rating":0,"author_block_rating":0,"active_installs":0,"downloads":60,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.0":{"tag":"2.0.0","author":"raffie","date":"2026-10-31 13:03:35","revision":3776862},"2.1.0":{"tag":"2.1.0","author":"raffie","date":"2026-10-31 13:42:59","revision":3776916}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3776915,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3776915,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3776915,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3776915,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0.0","2.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Spreadsheet with filters, bulk panel and column manager."}},"plugin_section":[],"plugin_tags":[11143,567,702,9471,286],"plugin_category":[45],"plugin_contributors":[289916],"plugin_business_model":[],"class_list":["post-395196","plugin","type-plugin","status-publish","hentry","plugin_tags-bulk-edit","plugin_tags-csv","plugin_tags-products","plugin_tags-spreadsheet","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-raffie","plugin_committers-raffie"],"banners":{"banner":"https:\/\/ps.w.org\/rafgrid\/assets\/banner-772x250.png?rev=3776915","banner_2x":"https:\/\/ps.w.org\/rafgrid\/assets\/banner-1544x500.png?rev=3776915","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/rafgrid\/assets\/icon-128x128.png?rev=3776915","icon_2x":"https:\/\/ps.w.org\/rafgrid\/assets\/icon-256x256.png?rev=3776915","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Rafgrid shows your content as a spreadsheet: filter, sort, edit cells inline, run bulk operations (set, replace, append, prepend, increase\/decrease, formulas), manage WooCommerce prices and stock, save column layouts and views, export\/import CSV and XLSX, and undo bulk changes.<\/p>\n\n<p>WooCommerce is optional. Without it, Rafgrid edits posts, pages and any other post type; with it, the Products list gains SKU, price, stock, variation and order tools.<\/p>\n\n<ul>\n<li>All public post types + WooCommerce products (SKU, prices, stock, weight, dimensions, visibility, featured).<\/li>\n<li>Taxonomies, featured images, authors, dates, custom fields (meta:KEY).<\/li>\n<li>Views: saved filter + column presets per user.<\/li>\n<li>Undo history for bulk operations and a per-cell audit log.<\/li>\n<li>Every read and write uses the WordPress capability for that exact item: authors only see and edit their own items, publishing and deleting need the matching rights.<\/li>\n<li>Automation rules, background jobs, snapshots and a supplier price feed for administrators.<\/li>\n<li>A built-in MCP endpoint so AI assistants can work with content and catalog data, authenticated with WordPress Application Passwords.<\/li>\n<li>Ten interface languages: English, Spanish, German, French, Brazilian Portuguese, Russian, Turkish, Armenian, Japanese and Simplified Chinese; translation-ready.<\/li>\n<\/ul>\n\n<p>Rafgrid is not affiliated with or endorsed by WooCommerce or Automattic.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin works fully offline by default. It contacts external services\nonly when an administrator explicitly configures and triggers them:<\/p>\n\n<ul>\n<li>AI text generation - uses the WordPress AI Client (WordPress 7.0+) with\nthe provider the site owner configured for the whole site. Only when that\nis unavailable, and only if an administrator entered a fallback\nOpenAI-compatible endpoint (base URL, own API key, model) in the plugin\nsettings, is the request sent to that endpoint instead. In both cases the\nitem title and a trimmed excerpt of its content are sent when an editor\nruns AI generation. No provider, URL or key is bundled. The terms and\nprivacy policy of the provider the administrator chose apply.<\/li>\n<li>Supplier price feeds - the plugin fetches a CSV from a URL the admin saved\nin settings (sku, price, stock) when sync runs manually or on schedule.<\/li>\n<li>Webhooks - after bulk operations, a short text summary (column, mode,\ncounts, editor name) is posted to a webhook URL the admin configured\n(for example a Slack\/Telegram bridge).<\/li>\n<li>Image sideloading - images are downloaded from URLs an editor enters.<\/li>\n<li>Link checker - sends HEAD requests to the external links found in your\npublished content when an editor runs it.<\/li>\n<li>MCP server - the plugin <em>provides<\/em> a REST endpoint for AI clients that\nauthenticate as a WordPress user with an Application Password; it calls\nno external service itself.<\/li>\n<\/ul>\n\n<p>No telemetry, tracking or advertising requests are made.<\/p>\n\n<h3>Support<\/h3>\n\n<p>Author: Raffi Hakobyan - https:\/\/raf.am - hakobyan@raf.am<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> and activate.<\/li>\n<li>Open Rafgrid in the admin menu.<\/li>\n<li>The TypeScript sources are in <code>src\/<\/code>; run <code>npm install &amp;&amp; npm run build<\/code> to rebuild <code>build\/<\/code> (release zips already include it).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20without%20woocommerce%3F\"><h3>Does it work without WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. WooCommerce columns appear only for the <code>product<\/code> type when WooCommerce is active.<\/p><\/dd>\n<dt id=\"is%20it%20safe%20for%20large%20catalogs%3F\"><h3>Is it safe for large catalogs?<\/h3><\/dt>\n<dd><p>Rows are paged server-side (10\u2013200 per page), bulk operations are capped, every save checks capabilities and nonces.<\/p><\/dd>\n<dt id=\"how%20do%20ai%20assistants%20connect%3F\"><h3>How do AI assistants connect?<\/h3><\/dt>\n<dd><p>Create an Application Password in Users -&gt; Profile and use it as Basic auth for the endpoint shown in Settings. The assistant acts as that WordPress user and gets content and catalog tools only - no user, role, plugin, theme or site-settings tools.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Seven new interface languages: Spanish, German, French, Brazilian Portuguese, Japanese, Simplified Chinese and Turkish (plus English, Russian and Armenian).<\/li>\n<li>New plugin icon.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>New name: Rafgrid. Settings, views, history, audit log, rules, notes and snapshots move to the new names automatically.<\/li>\n<li>Security: object-level capability checks (edit, publish, delete) on every item for the sheet, bulk edits, paste, import, undo, merges, notes, images and MCP.<\/li>\n<li>Security: user role and email changes follow the core user editor rules; user tools removed from MCP.<\/li>\n<li>Security: protected custom fields (meta:KEY) are editable by administrators only, unless offered as a column or allowed by WordPress; custom field values are sanitized.<\/li>\n<li>Security: automation rules, scheduled exports and feeds run as the administrator who set them up; WP-CLI runs as the --user you pass.<\/li>\n<li>MCP authenticates with WordPress Application Passwords only; the plugin's own keys and tokens were removed.<\/li>\n<li>Snapshots and scheduled exports are stored as private files.<\/li>\n<li>AI uses the WordPress AI Client, with an optional OpenAI-compatible fallback connection.<\/li>\n<\/ul>\n\n<h4>1.16.0<\/h4>\n\n<ul>\n<li>Last release under the previous name.<\/li>\n<\/ul>\n\n<h4>1.14.0<\/h4>\n\n<ul>\n<li>Full localization: Russian completed (0 untranslated) and Armenian (hy) added for every string, including JS bundles.<\/li>\n<\/ul>\n\n<h4>1.13.0<\/h4>\n\n<ul>\n<li>Stability &amp; security refactor: admin gates for rules\/snapshots\/feeds, SSRF guard, upgrade routine, guarded background jobs, MCP REST dedupe.<\/li>\n<\/ul>\n\n<h4>1.12.0<\/h4>\n\n<ul>\n<li>MCP: set SEO (Yoast + Rank Math in one call), in-content images via the image import insert mode.<\/li>\n<\/ul>\n\n<h4>1.11.0<\/h4>\n\n<ul>\n<li>Standard AI connection prompt in Settings and Documentation, also served natively via MCP prompts\/list and prompts\/get.<\/li>\n<\/ul>\n\n<h4>1.9.0<\/h4>\n\n<ul>\n<li>Multilingual in-admin Documentation page covering every feature.<\/li>\n<\/ul>\n\n<h4>1.8.0<\/h4>\n\n<ul>\n<li>MCP access control: modes (full\/read-only\/custom), role gates, tool groups, deny-list, rate limiting, IP allowlist, call log.<\/li>\n<\/ul>\n\n<h4>1.7.0<\/h4>\n\n<ul>\n<li>MCP server: Model Context Protocol (Streamable HTTP) endpoint for AI clients.<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>Automation release: rules engine, formulas, scheduled bulk, presence, notes, merchant feed, slug redirects, config portability.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Everything release: staged edits, column filters, formatting rules, totals, orders\/users sheets, supplier feed, snapshots, AI, WP-CLI, webhooks, locks.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>All-in release: Excel paste, dry-run preview, apply-to-filtered, background jobs, audit log, variations, XLSX, terms\/comments sheets, ACF\/SEO columns, plugin language.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>PHP 8.3 (backed enum for bulk modes, typed constants), TypeScript sources.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>@wordpress\/api-fetch for all requests, WooCommerce HPOS compatibility declaration, REST argument schemas.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>@wordpress\/scripts 37, ES imports + createRoot, PHP 8 functions, updated requirements.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Bulk edit posts, pages, WooCommerce products and any post type in a fast spreadsheet, with filters, formulas, CSV\/XLSX and undo.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/395196","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=395196"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/raffie"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=395196"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=395196"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=395196"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=395196"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=395196"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=395196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}