{"id":398682,"date":"2026-11-11T07:54:23","date_gmt":"2026-11-11T07:54:23","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/dahu-order-notes\/"},"modified":"2026-11-11T07:53:52","modified_gmt":"2026-11-11T07:53:52","slug":"dahuconcept-order-notes","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/dahuconcept-order-notes\/","author":17844309,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.1.1","stable_tag":"2.1.1","tested":"7.1.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"DahuConcept Order Notes for WooCommerce","header_author":"Hugo Vial-Jaime","header_description":"Visually separates the order notes a human actually wrote from the ones WooCommerce and its extensions generate automatically.","last_updated":"2026-11-11 07:53:52","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/dahu-concept.fr","rating":0,"author_block_rating":0,"active_installs":0,"downloads":99,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.1.1":{"tag":"2.1.1","author":"dahuconcept","date":"2026-11-11 07:53:52","revision":3795837}},"upgrade_notice":{"2.0.0":"<p>First public release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3795836,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3795836,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3795836,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3795836,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3795836,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.1.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3795836,"resolution":"1","location":"assets","locale":"","width":1120,"height":1149},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3795836,"resolution":"2","location":"assets","locale":"","width":1280,"height":647}},"screenshots":{"1":"Order notes with hand-written entries highlighted.","2":"The settings screen."}},"plugin_section":[],"plugin_tags":[220478,37121,220486,16281,286],"plugin_category":[45],"plugin_contributors":[292004],"plugin_business_model":[],"class_list":["post-398682","plugin","type-plugin","status-publish","hentry","plugin_tags-customer-notes","plugin_tags-internal-notes","plugin_tags-order-notes","plugin_tags-orders","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-dahuconcept","plugin_committers-dahuconcept"],"banners":{"banner":"https:\/\/ps.w.org\/dahuconcept-order-notes\/assets\/banner-772x250.png?rev=3795836","banner_2x":"https:\/\/ps.w.org\/dahuconcept-order-notes\/assets\/banner-1544x500.png?rev=3795836","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/dahuconcept-order-notes\/assets\/icon.svg?rev=3795836","icon":"https:\/\/ps.w.org\/dahuconcept-order-notes\/assets\/icon.svg?rev=3795836","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/dahuconcept-order-notes\/assets\/screenshot-1.png?rev=3795836","caption":"Order notes with hand-written entries highlighted."},{"src":"https:\/\/ps.w.org\/dahuconcept-order-notes\/assets\/screenshot-2.png?rev=3795836","caption":"The settings screen."}],"raw_content":"<!--section=description-->\n<p>On a busy shop, the order notes panel fills up with machine-generated entries:\nstatus changes, stock movements, refunds, tracking numbers, invoice events. The\none note that matters \u2014 the one a colleague typed about this particular\ncustomer \u2014 is buried among them.<\/p>\n\n<p>WooCommerce already styles customer notes and system notes differently. It\ncannot style the third category: notes generated by code <em>while a staff member\nis logged in<\/em>. Changing an order status from the admin screen produces a note\nattributed to that person, indistinguishable in the markup from a note they\ntyped themselves.<\/p>\n\n<p>DahuConcept Order Notes identifies those and leaves the hand-written ones highlighted.<\/p>\n\n<h4>How detection works<\/h4>\n\n<p>Automatic notes are recognised by their wording. Rather than hardcoding that\nwording in one language, the plugin rebuilds its patterns at runtime from\nWooCommerce's own translatable strings. It therefore follows whatever locale\nyour shop runs in, with no configuration \u2014 French, German, Spanish or any other\ntranslated locale works out of the box.<\/p>\n\n<p>Notes added by other plugins can be declared in the settings screen, one phrase\nper line, or through a filter for developers.<\/p>\n\n<h4>What it does not do<\/h4>\n\n<p>The plugin never writes to the database and never alters a note's content or\nmetadata. Everything is computed at display time. Deactivating it leaves no\ntrace.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Highlights hand-written private notes on the order screen<\/li>\n<li>Locale-independent detection, rebuilt from WooCommerce's own translations<\/li>\n<li>Configurable highlight colours<\/li>\n<li>Additional phrases configurable from the settings screen, no code needed<\/li>\n<li><code>ubac_notes_auto_patterns<\/code> filter for developers<\/li>\n<li>Works with both legacy order storage and High-Performance Order Storage<\/li>\n<\/ul>\n\n<h4>External services<\/h4>\n\n<p>This plugin does not contact any external service.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>, or install it from the\nPlugins screen.<\/li>\n<li>Activate it through the Plugins screen.<\/li>\n<li>Go to WooCommerce &gt; DahuConcept Order Notes to adjust the colours if you want to.<\/li>\n<\/ol>\n\n<p>Highlighting is on by default; there is nothing to configure to get started.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20on%20a%20shop%20that%20is%20not%20in%20english%3F\"><h3>Does it work on a shop that is not in English?<\/h3><\/dt>\n<dd><p>Yes, and that is the point. The detection patterns come from WooCommerce's own\ntranslated strings, so the plugin adapts to the shop's locale on its own.<\/p><\/dd>\n<dt id=\"a%20plugin%20of%20mine%20adds%20notes%20that%20are%20not%20detected\"><h3>A plugin of mine adds notes that are not detected<\/h3><\/dt>\n<dd><p>Add the beginning of the note's text in WooCommerce &gt; DahuConcept Order Notes, one phrase\nper line. Developers can use the <code>ubac_notes_auto_patterns<\/code> filter instead.<\/p><\/dd>\n<dt id=\"does%20it%20modify%20my%20order%20notes%3F\"><h3>Does it modify my order notes?<\/h3><\/dt>\n<dd><p>No. Nothing is written to the database at any point.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20high-performance%20order%20storage%20%28hpos%29%3F\"><h3>Is it compatible with High-Performance Order Storage (HPOS)?<\/h3><\/dt>\n<dd><p>Yes.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.1.1<\/h4>\n\n<ul>\n<li>Fixed: every translation call now names this plugin's own text domain. Recognising WooCommerce's automatic order notes means reading WooCommerce's own wordings in the shop's language, and that was done with 27 calls naming WooCommerce's text domain. The directory's review refused it, rightly: a plugin's translation calls must name its own domain, which is what lets the community translate it. The wordings are now read from WooCommerce's catalogue directly, which says the same thing without a translation call \u2014 and is the more honest shape, since looking up someone else's catalogue is exactly what happens.<\/li>\n<li>Detection in a translated shop is unchanged, and now proven in both directions: a French note is recognised when WooCommerce's catalogue is French, an English note when no catalogue is loaded, a hand-written note in neither case. A canary feeds the detector a nonsense catalogue and requires the French note to stop being recognised, so the proof cannot pass while the catalogue is ignored.<\/li>\n<li>Each of those wordings used to be written twice on its line, once as the array key and once inside the translation call, to satisfy the gettext parser. The duplication is gone with the calls.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>The activation screen now opens on the plugin's own mark rather than its initials, and the banner carries the same drawing as a watermark.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<li>Detection patterns are now rebuilt from WooCommerce's translated strings\ninstead of a hardcoded French list, so the plugin works in any locale.<\/li>\n<li>Added a settings field to declare additional automatic notes without code.<\/li>\n<li>Styles are enqueued properly instead of printed in the admin head.<\/li>\n<li>Colour values are re-validated at output time.<\/li>\n<li>Added an uninstall routine, including multisite.<\/li>\n<li>Renamed the marker class to <code>ubac-auto-note<\/code> to avoid collisions.<\/li>\n<\/ul>","raw_excerpt":"Makes the order notes a person actually wrote stand out from the ones WooCommerce generates on its own.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/398682","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=398682"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/dahuconcept"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=398682"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=398682"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=398682"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=398682"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=398682"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=398682"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}