{"id":376766,"date":"2026-10-03T07:44:48","date_gmt":"2026-10-03T07:44:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/product-publish-guard\/"},"modified":"2026-10-09T14:30:08","modified_gmt":"2026-10-09T14:30:08","slug":"sapphireit-publish-guard","status":"publish","type":"plugin","link":"https:\/\/ru.wordpress.org\/plugins\/sapphireit-publish-guard\/","author":21092833,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.3","requires":"6.5","requires_php":"8.0","requires_plugins":null,"header_name":"SapphireIT Publish Guard for WooCommerce","header_author":"Md. Readush Shalihin","header_description":"A pre-publish quality checklist for WooCommerce products, with optional server-side publishing enforcement.","assets_banners_color":"757e97","last_updated":"2026-10-09 14:30:08","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/sapphireit\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":300,"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":"sapphireit","date":"2026-10-09 14:30:08","revision":3736858}},"upgrade_notice":{"1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3725888,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3725888,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3725888,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3725888,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3725888,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3725888,"resolution":"1","location":"assets","locale":"","width":1568,"height":709},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3725888,"resolution":"2","location":"assets","locale":"","width":1568,"height":709},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3725888,"resolution":"3","location":"assets","locale":"","width":1568,"height":709},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3725888,"resolution":"4","location":"assets","locale":"","width":1568,"height":709}},"screenshots":{"1":"The checklist panel in the product editor, showing product checks before publishing.","2":"The readiness column in the Products list.","3":"The settings screen under WooCommerce &gt; Product Checklist.","4":"The notice shown when a product cannot be published because a required check fails."}},"plugin_section":[],"plugin_tags":[13042,702,7143,33324,286],"plugin_category":[45],"plugin_contributors":[284151],"plugin_business_model":[],"class_list":["post-376766","plugin","type-plugin","status-publish","hentry","plugin_tags-checklist","plugin_tags-products","plugin_tags-publishing","plugin_tags-quality-control","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-sapphireit","plugin_committers-sapphireit"],"banners":{"banner":"https:\/\/ps.w.org\/sapphireit-publish-guard\/assets\/banner-772x250.png?rev=3725888","banner_2x":"https:\/\/ps.w.org\/sapphireit-publish-guard\/assets\/banner-1544x500.png?rev=3725888","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/sapphireit-publish-guard\/assets\/icon.svg?rev=3725888","icon":"https:\/\/ps.w.org\/sapphireit-publish-guard\/assets\/icon.svg?rev=3725888","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/sapphireit-publish-guard\/assets\/screenshot-1.png?rev=3725888","caption":"The checklist panel in the product editor, showing product checks before publishing."},{"src":"https:\/\/ps.w.org\/sapphireit-publish-guard\/assets\/screenshot-2.png?rev=3725888","caption":"The readiness column in the Products list."},{"src":"https:\/\/ps.w.org\/sapphireit-publish-guard\/assets\/screenshot-3.png?rev=3725888","caption":"The settings screen under WooCommerce &gt; Product Checklist."},{"src":"https:\/\/ps.w.org\/sapphireit-publish-guard\/assets\/screenshot-4.png?rev=3725888","caption":"The notice shown when a product cannot be published because a required check fails."}],"raw_content":"<!--section=description-->\n<p>Products can go live without a featured image, description, SKU, category or valid price\u2014especially when several people manage a store.<\/p>\n\n<p><strong>SapphireIT Publish Guard adds a configurable checklist before WooCommerce products are published.<\/strong> Choose which checks are required and which are warnings. By default, if a required check fails, the product stays in draft and the editor explains what needs fixing.<\/p>\n\n<p>Unlike browser-only warnings, enforcement runs on the server for supported publishing paths, including Quick Edit, Bulk Edit, scheduled publishing, WooCommerce REST API requests and product saves made through WooCommerce by signed-in users. WP-CLI requests and requests without a signed-in user are not blocked.<\/p>\n\n<p><strong>A live checklist in the product editor.<\/strong> The panel in the classic WooCommerce product editor groups checks by content, media, pricing, organization and inventory. It refreshes as you type, upload images or choose categories, without requiring you to save first. Each failing item links to the field that needs attention.<\/p>\n\n<p><strong>Eleven built-in checks:<\/strong><\/p>\n\n<ul>\n<li>Product title<\/li>\n<li>Description (with a minimum length)<\/li>\n<li>Short description (with a minimum length)<\/li>\n<li>Featured image<\/li>\n<li>Product images (a minimum total count)<\/li>\n<li>Regular price (variable and grouped products are skipped)<\/li>\n<li>Sale price validity (lower than the regular price, with sensible dates)<\/li>\n<li>Product category (warns when only the store default is used)<\/li>\n<li>Product tags<\/li>\n<li>SKU<\/li>\n<li>Stock status<\/li>\n<\/ul>\n\n<p>Each check can be disabled or set to <strong>Required<\/strong> (it must pass before publishing) or <strong>Warning<\/strong> (advisory only).<\/p>\n\n<p><strong>See product readiness at a glance.<\/strong> A readiness column in the Products list helps you identify products that are ready and products that need attention.<\/p>\n\n<p><strong>A lightweight footprint.<\/strong><\/p>\n\n<ul>\n<li>No custom database tables, product post meta, roles or capabilities.<\/li>\n<li>Assets load only on the product editor, Products list and settings screen.<\/li>\n<li>No outbound network requests, tracking or upsell notices.<\/li>\n<\/ul>\n\n<p>SapphireIT Publish Guard for WooCommerce is an independent plugin. It is not affiliated with or endorsed by WooCommerce or Automattic.<\/p>\n\n<h3>Source Code<\/h3>\n\n<p>The editor script in <code>build\/<\/code> is compiled. Its human-readable React and SCSS sources ship with the plugin in the <code>assets\/<\/code> folder, and the full development repository is public at <a href=\"https:\/\/github.com\/rshalihin\/sapphireit-publish-guard\">GitHub<\/a>.<\/p>\n\n<p>To rebuild the compiled files from source, install Node.js and npm, then run:<\/p>\n\n<ol>\n<li><code>git clone https:\/\/github.com\/rshalihin\/sapphireit-publish-guard.git<\/code><\/li>\n<li><code>cd sapphireit-publish-guard<\/code><\/li>\n<li><code>npm install<\/code><\/li>\n<li><code>npm run build<\/code><\/li>\n<\/ol>\n\n<p>The build uses <code>@wordpress\/scripts<\/code> and writes the compiled files to <code>build\/<\/code>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce 9.0 or newer.<\/li>\n<li>Install SapphireIT Publish Guard from Plugins &gt; Add New, or upload <code>sapphireit-publish-guard.zip<\/code> to your WordPress site.<\/li>\n<li>Activate SapphireIT Publish Guard for WooCommerce.<\/li>\n<li>Go to WooCommerce &gt; Product Checklist. Choose which checks run, which are required, the content thresholds and the publishing behaviour.<\/li>\n<\/ol>\n\n<p>The settings screen is available to users who can manage WooCommerce, including administrators and shop managers.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20happens%20if%20a%20required%20check%20fails%3F\"><h3>What happens if a required check fails?<\/h3><\/dt>\n<dd><p>By default, the product stays in draft instead of being published, and a notice explains which checks need attention. You can optionally allow users who can manage WooCommerce to publish anyway in the settings.<\/p><\/dd>\n<dt id=\"does%20it%20unpublish%20products%20that%20are%20already%20live%3F\"><h3>Does it unpublish products that are already live?<\/h3><\/dt>\n<dd><p>No. Enforcement applies when a product moves into Published or Scheduled. A live product that later fails a check shows the problem in its checklist and in the Products list, but it is not automatically taken offline.<\/p><\/dd>\n<dt id=\"can%20an%20administrator%20publish%20anyway%3F\"><h3>Can an administrator publish anyway?<\/h3><\/dt>\n<dd><p>Only if you enable <strong>Allow users who can manage WooCommerce to publish anyway<\/strong> on the settings screen. This option is off by default.<\/p><\/dd>\n<dt id=\"does%20it%20block%20imports%2C%20wp-cli%20or%20cron%20jobs%3F\"><h3>Does it block imports, WP-CLI or cron jobs?<\/h3><\/dt>\n<dd><p>WP-CLI requests and requests without a signed-in user are not blocked, so imports and system jobs are not silently turned into drafts. Scheduled publishing is checked when the scheduled time arrives; a scheduled product that fails its required checks is returned to draft.<\/p><\/dd>\n<dt id=\"can%20i%20limit%20enforcement%20to%20the%20admin%20editor%20screens%3F\"><h3>Can I limit enforcement to the admin editor screens?<\/h3><\/dt>\n<dd><p>Yes. Under <strong>Enforcement applies to<\/strong>, choose <strong>Admin editor screens only<\/strong>. The default, <strong>All signed-in requests<\/strong>, also covers the REST API and code that saves products through WooCommerce for a signed-in user.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20woocommerce%20product%20block%20editor%3F\"><h3>Does it work with the WooCommerce product block editor?<\/h3><\/dt>\n<dd><p>The checklist panel currently appears in the classic product editor, not the newer product block editor. Publishing enforcement still works when the block editor saves through the WooCommerce REST API.<\/p><\/dd>\n<dt id=\"why%20is%20the%20regular%20price%20check%20skipped%20for%20variable%20products%3F\"><h3>Why is the regular price check skipped for variable products?<\/h3><\/dt>\n<dd><p>A variable product's price lives on its variations, and variation-level checks are not part of this version. Grouped products are also skipped by the regular price check.<\/p><\/dd>\n<dt id=\"can%20i%20sort%20or%20filter%20the%20products%20list%20by%20readiness%3F\"><h3>Can I sort or filter the Products list by readiness?<\/h3><\/dt>\n<dd><p>Not in this version. Readiness is calculated when the list is shown and is not stored.<\/p><\/dd>\n<dt id=\"can%20developers%20add%20their%20own%20checks%3F\"><h3>Can developers add their own checks?<\/h3><\/dt>\n<dd><p>Yes. Register a rule on the <code>sit_wcpg_register_rules<\/code> action. It gets a settings row, a checklist row and enforcement automatically. Developer documentation is in <code>README.md<\/code> inside the plugin folder.<\/p><\/dd>\n<dt id=\"does%20it%20slow%20down%20the%20products%20list%3F\"><h3>Does it slow down the Products list?<\/h3><\/dt>\n<dd><p>The readiness column adds two database queries for an entire page of products, regardless of the page size.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Live product checklist in the classic product editor, with eleven configurable checks.<\/li>\n<li>Server-side publishing enforcement covering the editor, Quick Edit, Bulk Edit, scheduled publishing and WooCommerce CRUD and REST saves.<\/li>\n<li>Readiness column in the Products list.<\/li>\n<li>Settings screen under WooCommerce &gt; Product Checklist.<\/li>\n<li>Developer hooks: <code>sit_wcpg_register_rules<\/code>, <code>sit_wcpg_validation_result<\/code>, <code>sit_wcpg_should_enforce<\/code> and <code>sit_wcpg_can_override_publish_guard<\/code>.<\/li>\n<\/ul>","raw_excerpt":"Prevent incomplete WooCommerce products from going live with a configurable checklist and server-side publishing checks.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/376766","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=376766"}],"author":[{"embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sapphireit"}],"wp:attachment":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=376766"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=376766"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=376766"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=376766"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=376766"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=376766"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}