{"id":370918,"date":"2026-09-26T07:00:18","date_gmt":"2026-09-26T07:00:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/product-sheet-importer-for-woocommerce\/"},"modified":"2026-09-26T07:00:04","modified_gmt":"2026-09-26T07:00:04","slug":"product-sheet-importer-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/product-sheet-importer-for-woocommerce\/","author":15763694,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.2","stable_tag":"1.3.2","tested":"7.1.2","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Product Sheet Importer for WooCommerce","header_author":"Asymetria","header_description":"Paste a structured product sheet into one box on the product edit screen and auto-fill title, slug, descriptions, attributes, tags, SEO fields and featured-image meta. HTML is preserved; empty sections never overwrite existing content.","assets_banners_color":"","last_updated":"2026-09-26 07:00:04","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/asymetria.com.pl","rating":0,"author_block_rating":0,"active_installs":0,"downloads":35,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.2":{"tag":"1.3.2","author":"asymetria","date":"2026-09-26 07:00:04","revision":3713929}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.3.2"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[9032,87,702,186,286],"plugin_category":[45,55,59],"plugin_contributors":[282776],"plugin_business_model":[],"class_list":["post-370918","plugin","type-plugin","status-publish","hentry","plugin_tags-attributes","plugin_tags-import","plugin_tags-products","plugin_tags-seo","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-seo-and-marketing","plugin_category-utilities-and-tools","plugin_contributors-asymetria","plugin_committers-asymetria"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/product-sheet-importer-for-woocommerce.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Entering products by hand means copying a dozen fields from a document into a dozen\nboxes, one product at a time. This plugin adds a single box to the product edit\nscreen: paste the whole sheet, click <strong>Import Product Sheet<\/strong>, and every recognised\nsection goes where it belongs.<\/p>\n\n<p><strong>What it fills<\/strong><\/p>\n\n<ul>\n<li>Product title and permalink<\/li>\n<li>Short description and description, with the HTML kept exactly as written<\/li>\n<li>Product attributes, as global attribute terms where that is possible<\/li>\n<li>Product tags<\/li>\n<li>SEO title, focus keyword and meta description, in whichever SEO plugin is active<\/li>\n<li>ALT text, title, caption and description of the featured image<\/li>\n<\/ul>\n\n<p><strong>Nothing is deleted by accident.<\/strong> A section that is missing from the sheet, or\npresent but empty, is skipped - it never blanks a field that already has content.\nAn <code>Attributes<\/code> block replaces only the attributes it names, and an attribute that\nis already on the product keeps its position, its visibility and its \"used for\nvariations\" flag.<\/p>\n\n<p><strong>Attributes are resolved properly.<\/strong> The label from the sheet is matched against\nthe shop's global attributes by label, slug and taxonomy name. On a match the values\nbecome real terms and the product is attached to them, so layered navigation,\nattribute filters and attribute archives can see it. If you tick \"Create global\nattributes the shop does not have yet\", missing ones are created for you; otherwise\nthe attribute is stored as a local one, exactly as before.<\/p>\n\n<p><strong>Supported SEO plugins:<\/strong> Yoast SEO, Rank Math, SEOPress and All in One SEO. The\nactive one is detected automatically and named in the meta box.<\/p>\n\n<p>Prices, stock, SKU and images are deliberately out of scope - this plugin fills\neditorial fields and never touches what your shop sells or how much for.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin through <em>Plugins &gt; Add New &gt; Upload Plugin<\/em>, or copy the folder\ninto <code>wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate it. WooCommerce has to be active as well; if it is not, the plugin says\nso and does nothing.<\/li>\n<li>Edit any product, find the <strong>Import Product Sheet<\/strong> box, paste your sheet and\nclick <strong>Import Product Sheet<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20does%20a%20sheet%20look%20like%3F\"><h3>What does a sheet look like?<\/h3><\/dt>\n<dd><p>Each section header sits on its own line, a trailing colon is optional and case does\nnot matter. Everything until the next recognised header belongs to that section:<\/p>\n\n<pre><code>Product Title\nEthiopia Yirgacheffe Single-Origin Coffee - Whole Bean 340g\n\nAttributes\nRoast Level: Light-Medium\nTasting Notes: Jasmine | Citrus | Black Tea\n\nTags\nsingle-origin, ethiopia, whole bean\n<\/code><\/pre>\n\n<p>Attribute values accept <code>|<\/code> or <code>,<\/code>; tags accept commas or new lines.<\/p><\/dd>\n<dt id=\"will%20importing%20twice%20overwrite%20my%20work%3F\"><h3>Will importing twice overwrite my work?<\/h3><\/dt>\n<dd><p>Only the sections your sheet actually contains are written. Anything the sheet does\nnot mention is left alone.<\/p><\/dd>\n<dt id=\"why%20was%20my%20attribute%20stored%20as%20a%20local%20one%3F\"><h3>Why was my attribute stored as a local one?<\/h3><\/dt>\n<dd><p>Either the box for creating global attributes was not ticked, or the product already\nhad a local attribute with that name - in which case it is filled in place rather\nthan gaining a global twin next to it. The notice after the import says which of the\ntwo happened for every line.<\/p><\/dd>\n<dt id=\"can%20i%20stop%20it%20creating%20attributes%20on%20a%20client%27s%20shop%3F\"><h3>Can I stop it creating attributes on a client's shop?<\/h3><\/dt>\n<dd><p>Yes, with a filter:<\/p>\n\n<pre><code>add_filter( 'psifw_create_missing_attribute', '__return_false' );\n<\/code><\/pre><\/dd>\n<dt id=\"does%20it%20change%20my%20html%3F\"><h3>Does it change my HTML?<\/h3><\/dt>\n<dd><p>Not if you are allowed to post unfiltered HTML. Anyone else gets the same <code>wp_kses<\/code>\ntreatment the editor applies, so a sheet cannot smuggle markup past the rules that\nalready apply to that user.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>The meta box stylesheet and script are enqueued from assets\/ instead of being\nprinted inline, and only on the product editor.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Declares compatibility with WooCommerce's high-performance order storage and the\ncart and checkout blocks, and declares that the classic meta box does not appear in\nthe block product editor - so WooCommerce stops listing the plugin as untested.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Creating missing global attributes is now an explicit choice on the product screen.<\/li>\n<li>Sheets from users without the <code>unfiltered_html<\/code> capability go through <code>wp_kses_post()<\/code>.<\/li>\n<li>Renamed everything to its own prefix and dropped the manual translation loading.<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>A second copy of the plugin no longer takes the site down on activation.<\/li>\n<li>The notice names the plugin version, lists what the Attributes block did line by\nline, and reports the exact error when an attribute or term cannot be created.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Missing global attributes can be created, with their taxonomy registered straight\naway so terms attach in the same request.<\/li>\n<li>Added the Import Product Sheet button.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Attributes resolve to global attribute terms when the shop has a matching one.<\/li>\n<li>An Attributes section replaces only the attributes it names.<\/li>\n<li>A rejected paste is kept instead of emptying the box.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Paste a product sheet into one box on the product screen and fill the title, descriptions, attributes, tags, SEO fields and image meta in one click.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/370918","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=370918"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/asymetria"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=370918"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=370918"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=370918"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=370918"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=370918"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=370918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}