{"id":376925,"date":"2026-09-28T06:51:49","date_gmt":"2026-09-28T06:51:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/jeytech-safety-data-by-brand-for-woocommerce\/"},"modified":"2026-10-13T18:49:27","modified_gmt":"2026-10-13T18:49:27","slug":"jeytech-safety-data-by-brand","status":"publish","type":"plugin","link":"https:\/\/ewe.wordpress.org\/plugins\/jeytech-safety-data-by-brand\/","author":23573036,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.3","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"JeyTech Safety Data by Brand for WooCommerce","header_author":"JeyTech","header_description":"Add GPSR manufacturer and safety information to every product \u2014 set it once per brand, audit what's missing.","assets_banners_color":"333334","last_updated":"2026-10-13 18:49:27","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":153,"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":"jeytech","date":"2026-10-12 16:41:48","revision":3742165},"1.0.1":{"tag":"1.0.1","author":"jeytech","date":"2026-10-13 18:49:27","revision":3744718}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3716420,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3716420,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3716420,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3716420,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3744720,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"meta\":{\"author\":\"JeyTech\",\"title\":\"jeytech-safety-data-by-brand \\u2014 live demo\",\"description\":\"Isolated fictitious demo. Sample bank account: DO NOT PAY. No external HTTP or email.\"},\"preferredVersions\":{\"php\":\"8.3\",\"wp\":\"latest\"},\"features\":{\"networking\":false},\"landingPage\":\"\\\/?product=demo-notebook\",\"steps\":[{\"step\":\"defineWpConfigConsts\",\"consts\":{\"DISABLE_WP_CRON\":true,\"WP_HTTP_BLOCK_EXTERNAL\":true}},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/mu-plugins\\\/jeytech-preview.php\",\"data\":\"<?php\\n\\\/\\\/ Isolated preview only: no email, external HTTP, cron or async queue runner.\\nadd_filter('pre_wp_mail', '__return_true');\\nadd_filter('pre_http_request', function(){ return new WP_Error('preview_offline', 'External HTTP is disabled in this demo.'); }, 1);\\nadd_filter('action_scheduler_allow_async_request_runner', '__return_false');\\nadd_filter('woocommerce_enable_setup_wizard', '__return_false');\\nadd_filter('woocommerce_show_admin_notice', '__return_false');\\n\\\/\\\/ Focus the actual plugin output, preserving its own HTML and behavior.\\nadd_action('wp_footer', function(){ echo '<script>document.addEventListener(\\\"DOMContentLoaded\\\",function(){const e=document.querySelector(\\\".jeytech-otqr-payment,.jeytech-sdbb-safety,.jeytech-tdph-lowest-price\\\");if(e)e.scrollIntoView({block:\\\"center\\\"});});<\\\/script>'; });\\nadd_action('admin_footer', function(){ if (($_GET['page'] ?? '') === 'jeytech-uog') echo '<script>document.querySelector(\\\".widefat.striped\\\")?.scrollIntoView({block:\\\"center\\\"});<\\\/script>'; });\\nadd_action('template_redirect', function(){\\n if (is_page('demo-order')) {\\n  $o=wc_get_order(get_option('jeytech_preview_order'));\\n  if ($o) { wp_safe_redirect($o->get_checkout_order_received_url()); exit; }\\n }\\n if (is_page('demo-checkout') || is_page('demo-cart')) {\\n  if (null === WC()->cart) wc_load_cart();\\n  WC()->customer->set_billing_country('FR'); WC()->customer->set_shipping_country('FR');\\n  WC()->customer->set_shipping_postcode('75001'); WC()->customer->set_shipping_city('Paris');\\n  if (WC()->cart->is_empty()) WC()->cart->add_to_cart(get_option('jeytech_preview_product'));\\n }\\n}, 1);\\n\"},{\"step\":\"setSiteOptions\",\"options\":{\"show_avatars\":0,\"blogname\":\"JeyTech \\u2014 sample store\",\"blogdescription\":\"Isolated demo \\u2014 all data is fictitious. Never send a payment.\",\"timezone_string\":\"Europe\\\/Paris\",\"woocommerce_currency\":\"EUR\",\"woocommerce_default_country\":\"FR\",\"woocommerce_store_address\":\"1 Example Demo Street (fictitious)\",\"woocommerce_store_city\":\"Paris\",\"woocommerce_store_postcode\":\"75001\",\"woocommerce_coming_soon\":\"no\",\"woocommerce_enable_guest_checkout\":\"yes\",\"woocommerce_onboarding_profile\":{\"completed\":true,\"skipped\":true},\"woocommerce_task_list_hidden\":\"yes\",\"woocommerce_allow_tracking\":\"no\",\"woocommerce_enable_marketplace_suggestions\":\"no\",\"woocommerce_custom_orders_table_enabled\":\"no\",\"woocommerce_bacs_settings\":{\"enabled\":\"yes\",\"title\":\"Bank transfer \\u2014 SAMPLE ONLY\",\"description\":\"Fictitious bank account for demo only. DO NOT send money.\"},\"woocommerce_bacs_accounts\":[{\"account_name\":\"SAMPLE ONLY - DO NOT PAY\",\"iban\":\"DE36000000000000000000\",\"bic\":\"\",\"bank_name\":\"FICTITIOUS BANK - zero bank code\",\"account_number\":\"\",\"sort_code\":\"\"}],\"permalink_structure\":\"\\\/%postname%\\\/\",\"woocommerce_price_decimal_sep\":\".\",\"woocommerce_price_thousand_sep\":\",\",\"woocommerce_currency_pos\":\"right_space\",\"woocommerce_price_num_decimals\":2}},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"woocommerce\"},\"options\":{\"activate\":true}},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"jeytech-safety-data-by-brand\"},\"options\":{\"activate\":true}},{\"step\":\"runPHP\",\"code\":\"<?php\\nrequire '\\\/wordpress\\\/wp-load.php';\\nwp_set_current_user(1);\\nWC_Install::create_pages();\\nforeach(WC()->mailer()->get_emails() as $email) add_filter('woocommerce_email_enabled_'.$email->id,'__return_false');\\nfunction demo_product($name='Demo notebook') { $p=new WC_Product_Simple(); $p->set_name($name); $p->set_slug('demo-notebook'); $p->set_status('publish'); $p->set_regular_price('25'); $p->set_description('Fictitious Playground demo. No payments or delivery.'); $p->save(); update_option('jeytech_preview_product',$p->get_id()); return $p; }\\nfunction demo_page($slug,$title,$content) { return wp_insert_post(array('post_type'=>'page','post_status'=>'publish','post_name'=>$slug,'post_title'=>$title,'post_content'=>$content)); }\\nupdate_option(\\\\JeyTech\\\\SafetyDataByBrand\\\\Settings::OPTION, array('enabled'=>true));\\n$brand=wp_insert_term('Example Demo Brand','product_brand');if(is_wp_error($brand))throw new Exception($brand->get_error_message());$bid=$brand['term_id'];\\nforeach(array('manufacturer'=>'Fictitious Demo Manufacturer','address'=>'1 Example Demo Street (fictitious), 75001 Paris, France','email'=>'safety@example.invalid','eu_responsible'=>'Fictitious EU Contact \\u2014 eu@example.invalid') as $field=>$value)update_term_meta($bid,'jeytech_sdbb_'.$field,$value);\\n$p=demo_product();wp_set_object_terms($p->get_id(),array((int)$bid),'product_brand');update_post_meta($p->get_id(),'_jeytech_sdbb_warnings','DEMO: Use indoors only. Keep away from water.');\\nflush_rewrite_rules();\\necho wp_json_encode(array('wp'=>get_bloginfo('version'),'wc'=>WC_VERSION,'php'=>PHP_VERSION,'product'=>get_option('jeytech_preview_product'),'order'=>get_option('jeytech_preview_order'),'external_http'=>'blocked','mail'=>'blocked'));\\n\"},{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"}]}"}},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1-fr.png":{"filename":"screenshot-1-fr.png","revision":3716420,"resolution":"1","location":"assets","locale":"fr","width":780,"height":339},"screenshot-1.png":{"filename":"screenshot-1.png","revision":3716420,"resolution":"1","location":"assets","locale":"","width":780,"height":339},"screenshot-2-fr.png":{"filename":"screenshot-2-fr.png","revision":3716420,"resolution":"2","location":"assets","locale":"fr","width":1340,"height":500},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3716420,"resolution":"2","location":"assets","locale":"","width":1340,"height":500},"screenshot-3-fr.png":{"filename":"screenshot-3-fr.png","revision":3716420,"resolution":"3","location":"assets","locale":"fr","width":1180,"height":319},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3716420,"resolution":"3","location":"assets","locale":"","width":1180,"height":319}},"screenshots":{"1":"Manufacturer fields on the brand screen, inherited by every product.","2":"The Product Safety section on the product page.","3":"The audit list of products missing GPSR data."}},"plugin_section":[],"plugin_tags":[14164,264911,62667,237366,286],"plugin_category":[45],"plugin_contributors":[282653],"plugin_business_model":[],"class_list":["post-376925","plugin","type-plugin","status-publish","hentry","plugin_tags-brands","plugin_tags-gpsr","plugin_tags-manufacturer","plugin_tags-product-safety","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-jeytech","plugin_committers-jeytech"],"banners":{"banner":"https:\/\/ps.w.org\/jeytech-safety-data-by-brand\/assets\/banner-772x250.jpg?rev=3716420","banner_2x":"https:\/\/ps.w.org\/jeytech-safety-data-by-brand\/assets\/banner-1544x500.jpg?rev=3716420","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/jeytech-safety-data-by-brand\/assets\/icon-128x128.png?rev=3716420","icon_2x":"https:\/\/ps.w.org\/jeytech-safety-data-by-brand\/assets\/icon-256x256.png?rev=3716420","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/jeytech-safety-data-by-brand\/assets\/screenshot-1.png?rev=3716420","caption":"Manufacturer fields on the brand screen, inherited by every product."},{"src":"https:\/\/ps.w.org\/jeytech-safety-data-by-brand\/assets\/screenshot-2.png?rev=3716420","caption":"The Product Safety section on the product page."},{"src":"https:\/\/ps.w.org\/jeytech-safety-data-by-brand\/assets\/screenshot-3.png?rev=3716420","caption":"The audit list of products missing GPSR data."}],"raw_content":"<!--section=description-->\n<p>Since 13 December 2024, EU Regulation 2023\/988 (GPSR) requires online offers to show the manufacturer's name and contact details, the EU responsible person when the manufacturer is outside the EU, and the product safety warnings. WooCommerce has no fields for any of this.<\/p>\n\n<p>Safety Data by Brand adds them where they belong:<\/p>\n\n<ul>\n<li><strong>Set once per brand<\/strong> \u2014 manufacturer, address, email and EU responsible person live on the brand (WooCommerce core taxonomy). Every product of the brand inherits them.<\/li>\n<li><strong>Override per product<\/strong> \u2014 any field can be replaced on a single product. Variations use their parent's data.<\/li>\n<li><strong>Safety warnings per product<\/strong> \u2014 care instructions shown with the manufacturer block.<\/li>\n<li><strong>\"Product Safety\" section on the page<\/strong> \u2014 a product tab on classic themes, an appended section on block themes. Nothing shows when a product has no data.<\/li>\n<li><strong>Audit list<\/strong> \u2014 the admin screen lists the products still missing GPSR data.<\/li>\n<\/ul>\n\n<p>Safety Data by Brand displays what you enter. It is not legal advice and does not guarantee compliance.<\/p>\n\n<p>Compatible with High-Performance Order Storage (HPOS) and the Cart &amp; Checkout blocks. Requires WooCommerce 9.6 or later for the core Brands taxonomy.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin (WooCommerce 9.6 or later must be active).<\/li>\n<li>Go to <strong>Products \u2192 Brands<\/strong> and fill in the manufacturer data of each brand.<\/li>\n<li>Optionally override fields or add warnings on a product (GPSR tab).<\/li>\n<li>Check <strong>WooCommerce \u2192 GPSR audit<\/strong> for products still missing data.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20make%20my%20shop%20compliant%3F\"><h3>Does it make my shop compliant?<\/h3><\/dt>\n<dd><p>No tool can. The plugin displays the data you enter in the right place; you remain responsible for its accuracy. When in doubt, ask a professional.<\/p><\/dd>\n<dt id=\"where%20do%20i%20enter%20the%20manufacturer%20data%3F\"><h3>Where do I enter the manufacturer data?<\/h3><\/dt>\n<dd><p>Once per brand under Products \u2192 Brands. Products inherit their brand's data; leave a product field empty to inherit it, or fill it to override.<\/p><\/dd>\n<dt id=\"what%20about%20variable%20products%3F\"><h3>What about variable products?<\/h3><\/dt>\n<dd><p>GPSR fields live on the parent product and its brand. Variations always use their parent's data.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20block%20themes%3F\"><h3>Does it work with block themes?<\/h3><\/dt>\n<dd><p>Yes. Classic themes show a \"Product Safety\" product tab; block themes get the same section appended to the product content, since the Single Product block renders no classic tabs.<\/p><\/dd>\n<dt id=\"what%20if%20a%20product%20has%20no%20brand%3F\"><h3>What if a product has no brand?<\/h3><\/dt>\n<dd><p>Fill the four fields directly on the product. The audit lists products that still miss data either way.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Add an optional review invitation on this plugin's settings screen after 14 days and feature use, with per-user snooze and permanent dismissal.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release: brand-level manufacturer data with per-product overrides, safety warnings, product page section for classic and block themes, audit list.<\/li>\n<\/ul>","raw_excerpt":"Add GPSR manufacturer and safety information to every product \u2014 set it once per brand, audit what's missing.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ewe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/376925","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ewe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ewe.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ewe.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=376925"}],"author":[{"embeddable":true,"href":"https:\/\/ewe.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jeytech"}],"wp:attachment":[{"href":"https:\/\/ewe.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=376925"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ewe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=376925"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ewe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=376925"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ewe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=376925"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ewe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=376925"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ewe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=376925"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}