[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fqfQVojRmfbl4S8VcYaqCFr4CdJ_pwYKDqa6vACNYyT0":3},{"slug":4,"display_name":5,"profile_url":6,"plugin_count":7,"total_installs":8,"avg_security_score":9,"avg_patch_time_days":10,"trust_score":11,"computed_at":12,"plugins":13},"runthingsdev","runthings.dev","https:\u002F\u002Fprofiles.wordpress.org\u002Frunthingsdev\u002F",11,1660,100,14,94,"2026-04-04T09:21:41.894Z",[14,38,57,75,93,109,128,142,158,173,184],{"slug":15,"name":16,"version":17,"author":5,"author_profile":6,"description":18,"short_description":19,"active_installs":20,"downloaded":21,"rating":9,"num_ratings":22,"last_updated":23,"tested_up_to":24,"requires_at_least":25,"requires_php":26,"tags":27,"homepage":33,"download_link":34,"security_score":9,"vuln_count":35,"unpatched_count":35,"last_vuln_date":36,"fetched_at":37},"runthings-taxonomy-tags-to-checkboxes","Taxonomy Tags to Checkboxes","1.5.0","\u003Cp>This plugin lets you swap the auto-complete \u002F search style interface for a checkbox list, without changing any underlying data.\u003C\u002Fp>\n\u003Cp>It allows you to pick from a list of the existing tags, so that admin users do not need to remember each tag.\u003C\u002Fp>\n\u003Cp>It can optionally allow new terms to be added directly from the post editing UI, while still letting you keep this disabled by default.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Replace the tags ui with a checkbox list\u003C\u002Fli>\n\u003Cli>No alteration to front end functionality, or the underlying data \u002F terms\u003C\u002Fli>\n\u003Cli>Option to control the height of the taxonomy metabox, between default (200px max), full, and custom (px)\u003C\u002Fli>\n\u003Cli>Optional inline add control for new terms, enabled per taxonomy\u003C\u002Fli>\n\u003Cli>Optional link to the taxonomy edit screen via an “+ Add \u002F Edit {taxonomy}” style link\u003C\u002Fli>\n\u003Cli>Optional per-taxonomy search box with Off, Always, and Min Terms modes\u003C\u002Fli>\n\u003Cli>Customization via filters\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Filters\u003C\u002Fh3>\n\u003Cp>For detailed documentation and examples, see the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frunthings-dev\u002Frunthings-taxonomy-tags-to-checkboxes#filters\" rel=\"nofollow ugc\">full documentation on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>runthings_ttc_selected_taxonomies\u003C\u002Fh4>\n\u003Cp>This filter allows developers to modify the array of taxonomies selected for the custom checkbox interface.\u003C\u002Fp>\n\u003Cp>Parameters:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>\u003Ccode>$selected_taxonomies\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>array\u003C\u002Fcode>): An array of taxonomy slugs. Remove a slug value from the array to disable the checkbox list override.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>runthings_ttc_search_settings\u003C\u002Fh4>\n\u003Cp>This filter allows developers to override per-taxonomy search UI behavior.\u003C\u002Fp>\n\u003Cp>Parameters:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>\u003Ccode>$search_settings\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>array\u003C\u002Fcode>): A map of taxonomy slugs to search config arrays (\u003Ccode>mode\u003C\u002Fcode>, \u003Ccode>threshold\u003C\u002Fcode>).\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This program is free software; you can redistribute it and\u002For modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.\u003C\u002Fp>\n\u003Cp>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\u003C\u002Fp>\n\u003Cp>You should have received a copy of the GNU General Public License along with this program; if not, see \u003Ca href=\"http:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0.html\" rel=\"nofollow ugc\">http:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0.html\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Icon – Check Box List by unlimicon from Noun Project, https:\u002F\u002Fthenounproject.com\u002Fbrowse\u002Ficons\u002Fterm\u002Fcheck-box-list\u002F (CC BY 3.0)\u003C\u002Fp>\n","Convert taxonomy tags to checkboxes in the WordPress admin area.",1000,2494,2,"2026-03-05T17:54:00.000Z","6.9.4","6.4","7.4",[28,29,30,31,32],"admin","checkboxes","tags","taxonomy","ui","https:\u002F\u002Frunthings.dev\u002Fwordpress-plugins\u002Ftaxonomy-tags-to-checkboxes\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Frunthings-taxonomy-tags-to-checkboxes.1.5.0.zip",0,null,"2026-03-15T15:16:48.613Z",{"slug":39,"name":40,"version":41,"author":5,"author_profile":6,"description":42,"short_description":43,"active_installs":44,"downloaded":45,"rating":11,"num_ratings":46,"last_updated":47,"tested_up_to":24,"requires_at_least":48,"requires_php":49,"tags":50,"homepage":52,"download_link":53,"security_score":54,"vuln_count":55,"unpatched_count":35,"last_vuln_date":56,"fetched_at":37},"bulk-page-stub-creator","Bulk Page Stub Creator","1.2.1","\u003Cp>This is a developer plugin for WordPress developers to ease their initial content setup process.\u003C\u002Fp>\n\u003Cp>It is a simple plugin; it gives you a text input area. On the first line you type the page title, on the second line you type the slug. Then you repeat the process for as many pages that you want to create.\u003C\u002Fp>\n\u003Cp>When you press the \u003Ccode>Create page stubs\u003C\u002Fcode> button it will automatically create all of the stubs for you.\u003C\u002Fp>\n\u003Ch3>Who This Is Aimed At\u003C\u002Fh3>\n\u003Cp>This plugin is for website developers that want to speed up their initial content setup process.\u003C\u002Fp>\n\u003Cp>It is a really simple plugin by design. I wrote it to help speed up my own website development process.\u003C\u002Fp>\n\u003Cp>I can see some ideas as to how this could be expanded and if you find this useful I’m open to suggestions on the GitHub Issues page.\u003C\u002Fp>\n\u003Ch3>How It Fits Into My Workflow\u003C\u002Fh3>\n\u003Cp>First I plan out the structure of my site in a sitemap document. This document contains the page names and the slugs.\u003C\u002Fp>\n\u003Cp>Then I create another document from this which details all of the page meta like, descriptions, titles, headers, contents text, footer tags and any other optimisations I want to add.\u003C\u002Fp>\n\u003Cp>This plugin lets me quickly process my sitemap document into real page stubs on the website, complete with the slugs I want.\u003C\u002Fp>\n\u003Cp>The results page is then shown which has edit page links for all of the new pages.\u003C\u002Fp>\n\u003Cp>This allows you to easily open up each tab in the order I’ve planned out (not alphabetically sorted like WordPress defaults) and insert the remaining meta to the pages.\u003C\u002Fp>\n\u003Cp>If this sounds like your workflow then this plugin could save you time!\u003C\u002Fp>\n","A developer admin plugin that lets you bulk create page stubs by providing a batch of page titles and slugs.",500,6824,3,"2026-03-12T20:55:00.000Z","4.0","",[28,51],"developer","https:\u002F\u002Frunthings.dev\u002Fwordpress-plugins\u002Fbulk-page-stub-creator\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbulk-page-stub-creator.1.2.1.zip",99,1,"2025-04-17 00:00:00",{"slug":58,"name":59,"version":60,"author":5,"author_profile":6,"description":61,"short_description":62,"active_installs":63,"downloaded":64,"rating":35,"num_ratings":35,"last_updated":65,"tested_up_to":24,"requires_at_least":66,"requires_php":26,"tags":67,"homepage":73,"download_link":74,"security_score":9,"vuln_count":35,"unpatched_count":35,"last_vuln_date":36,"fetched_at":37},"runthings-current-year-shortcode","Current Year Shortcode","2.1.1","\u003Cp>This is a plugin which adds a simple shortcode to display the current year or a dynamic year range, particularly useful for copyright statements at the bottom of your website.\u003C\u002Fp>\n\u003Cp>Its most basic usage is \u003Ccode>[year]\u003C\u002Fcode>, which will display the current year. If you provide a starting year with the ‘from’ parameter, it will expand into a date range when the ‘from’ year is before the current year.\u003C\u002Fp>\n\u003Cp>If \u003Ccode>[year]\u003C\u002Fcode> is used by another plugin, then it uses the fallback \u003Ccode>[runthings_year]\u003C\u002Fcode> which can be customised with the \u003Ccode>runthings_current_year_shortcode_tag\u003C\u002Fcode> filter. You can see the active shortcode tag in it entry in the installed plugins page.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Display current year with \u003Ccode>[year]\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Create a dynamic year range with \u003Ccode>[year from=\"2020\"]\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Abbreviated year format with \u003Ccode>[year from=\"2020\" mode=\"short\"]\u003C\u002Fcode>, which shows “2020-26” (if the current year is 2026)\u003C\u002Fli>\n\u003Cli>Automatic fallback shortcode \u003Ccode>[runthings_year]\u003C\u002Fcode> if another plugin already uses the ‘year’ shortcode\u003C\u002Fli>\n\u003Cli>Filter (\u003Ccode>runthings_current_year_shortcode_tag\u003C\u002Fcode>) to set your own shortcode\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Usage Examples\u003C\u002Fh4>\n\u003Cp>Assuming the current year is 2026:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>[year]\u003C\u002Fcode> displays “2026”\u003C\u002Fli>\n\u003Cli>\u003Ccode>[year from=\"2026\"]\u003C\u002Fcode> displays “2026” (since it’s the current year)\u003C\u002Fli>\n\u003Cli>\u003Ccode>[year from=\"1983\"]\u003C\u002Fcode> displays “1983-2026”\u003C\u002Fli>\n\u003Cli>\u003Ccode>[year from=\"2020\" mode=\"short\"]\u003C\u002Fcode> displays “2020-26” (shortened current year)\u003C\u002Fli>\n\u003Cli>\u003Ccode>[year from=\"1995\" mode=\"short\"]\u003C\u002Fcode> displays “1995-2026” (not shortened because centuries differ)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Filters\u003C\u002Fh3>\n\u003Ch4>runthings_current_year_shortcode_tag\u003C\u002Fh4>\n\u003Cp>This filter allows customization of the shortcode tag used by the plugin.\u003C\u002Fp>\n\u003Cp>For detailed documentation and examples, see the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frunthings-dev\u002Frunthings-current-year-shortcode#filters\" rel=\"nofollow ugc\">full documentation on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Parameters:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>\u003Ccode>$tag\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>string\u003C\u002Fcode>): The shortcode tag to be registered. Defaults to ‘year’ or ‘runthings_year’ if conflicted.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Additional Notes\u003C\u002Fh3>\n\u003Cp>Built by Matthew Harris of runthings.dev, copyright 2021-2026.\u003C\u002Fp>\n\u003Cp>Visit \u003Ca href=\"https:\u002F\u002Frunthings.dev\u002F\" rel=\"nofollow ugc\">runthings.dev\u003C\u002Fa> for more WordPress plugins and resources.\u003C\u002Fp>\n\u003Cp>Contribute or report issues at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frunthings-dev\u002Frunthings-current-year-shortcode\" rel=\"nofollow ugc\">GitHub repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This program is free software; you can redistribute it and\u002For modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.\u003C\u002Fp>\n\u003Cp>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\u003C\u002Fp>\n\u003Cp>You should have received a copy of the GNU General Public License along with this program; if not, see \u003Ca href=\"http:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0.html\" rel=\"nofollow ugc\">http:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0.html\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Icon – Calendar by Qadeer Hussain, from Noun Project, https:\u002F\u002Fthenounproject.com\u002Fbrowse\u002Ficons\u002Fterm\u002Fcalendar\u002F (CC BY 3.0)\u003C\u002Fp>\n\u003Cp>Icon – legal by hanis tusiyani, from Noun Project, https:\u002F\u002Fthenounproject.com\u002Fbrowse\u002Ficons\u002Fterm\u002Flegal\u002F (CC BY 3.0)\u003C\u002Fp>\n","Adds a shortcode to display the current year or a year range, perfect for copyright statements.",50,534,"2025-12-17T11:56:00.000Z","6.0",[68,69,70,71,72],"copyright","date","dynamic-content","shortcode","year","https:\u002F\u002Frunthings.dev\u002Fwordpress-plugins\u002Fcurrent-year-shortcode\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Frunthings-current-year-shortcode.2.1.1.zip",{"slug":76,"name":77,"version":78,"author":5,"author_profile":6,"description":79,"short_description":80,"active_installs":63,"downloaded":81,"rating":35,"num_ratings":35,"last_updated":49,"tested_up_to":24,"requires_at_least":82,"requires_php":83,"tags":84,"homepage":90,"download_link":91,"security_score":9,"vuln_count":35,"unpatched_count":35,"last_vuln_date":36,"fetched_at":92},"runthings-jsf-apply-button-scroll-to-top","Apply Button Scroll to Top for JetSmartFilters","1.1.2","\u003Cp>This plugin extends the JetSmartFilters Apply Button widget in Elementor by adding configurable scroll behavior when the apply button is clicked.\u003C\u002Fp>\n\u003Cp>When users apply filters, the page can automatically scroll to show the filtered results, improving the user experience by ensuring users see the updated content immediately.\u003C\u002Fp>\n\u003Cp>The plugin integrates seamlessly with Elementor’s widget controls and requires no coding to configure.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Add scroll-to-top functionality to JetSmartFilters apply button widgets\u003C\u002Fli>\n\u003Cli>Multiple scroll modes: Auto-detect, Window Top, Query ID, or Custom Target\u003C\u002Fli>\n\u003Cli>Auto-detection intelligently finds the listing grid based on JetSmartFilters configuration\u003C\u002Fli>\n\u003Cli>Smooth scrolling animation for better UX\u003C\u002Fli>\n\u003Cli>No alteration to JetSmartFilters or Elementor core functionality\u003C\u002Fli>\n\u003Cli>Per-widget configuration via Elementor’s interface\u003C\u002Fli>\n\u003Cli>Lightweight JavaScript implementation\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This program is free software; you can redistribute it and\u002For modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.\u003C\u002Fp>\n\u003Cp>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\u003C\u002Fp>\n\u003Cp>You should have received a copy of the GNU General Public License along with this program; if not, see \u003Ca href=\"http:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0.html\" rel=\"nofollow ugc\">http:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0.html\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Logo – up by nakals from \u003Ca href=\"https:\u002F\u002Fthenounproject.com\u002Fbrowse\u002Ficons\u002Fterm\u002Fup\u002F\" title=\"up Icons\" rel=\"nofollow ugc\">Noun Project\u003C\u002Fa> (CC BY 3.0)\u003C\u002Fp>\n","Adds smooth scroll-to-top functionality to JetSmartFilters apply button widget in Elementor.",476,"6.6","8.0",[85,86,87,88,89],"elementor","filters","jetsmartfilters","scroll","ux","https:\u002F\u002Frunthings.dev\u002Fwordpress-plugins\u002Fjsf-apply-button-back-to-top\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Frunthings-jsf-apply-button-scroll-to-top.1.1.2.zip","2026-03-15T10:48:56.248Z",{"slug":94,"name":95,"version":96,"author":5,"author_profile":6,"description":97,"short_description":98,"active_installs":63,"downloaded":99,"rating":35,"num_ratings":35,"last_updated":100,"tested_up_to":24,"requires_at_least":25,"requires_php":26,"tags":101,"homepage":107,"download_link":108,"security_score":9,"vuln_count":35,"unpatched_count":35,"last_vuln_date":36,"fetched_at":37},"runthings-wc-coupons-role-restrict","Coupons Role Restriction for WooCommerce","1.1.3","\u003Cp>This plugin allows you to restrict the usage of WooCommerce coupons based on user roles, including guest users.\u003C\u002Fp>\n\u003Cp>You can specify which roles (including guests) are allowed or excluded from using a coupon, providing more control over your discount strategies.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Restrict coupon usage based on user roles.\u003C\u002Fli>\n\u003Cli>Option to specify both allowed and excluded roles.\u003C\u002Fli>\n\u003Cli>Support for guest users with a “Customer Is A Guest” pseudo-role.\u003C\u002Fli>\n\u003Cli>Customize the error message via a filter.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Filters\u003C\u002Fh3>\n\u003Ch4>runthings_wc_coupons_role_restrict_error_message\u003C\u002Fh4>\n\u003Cp>This filter allows customization of the error message shown when a coupon is not valid for the user’s account type.\u003C\u002Fp>\n\u003Cp>For detailed documentation and advanced examples, see the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frunthings-dev\u002Frunthings-wc-coupons-role-restrict#filters\" rel=\"nofollow ugc\">full documentation on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Parameters:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>\u003Ccode>$message\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>string\u003C\u002Fcode>): The default error message, e.g., \u003Ccode>\"Sorry, this coupon is not valid for your account type.\"\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>$context\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>array\u003C\u002Fcode>): Additional context for the error, including the coupon, user roles, and guest status.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Ccode>$context\u003C\u002Fcode> object format:\u003C\u002Fp>\n\u003Cp>The \u003Ccode>$context\u003C\u002Fcode> array contains the following keys:\u003Cbr \u002F>\n– \u003Cstrong>\u003Ccode>coupon\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>WC_Coupon\u003C\u002Fcode>): The coupon object being validated.\u003Cbr \u002F>\n– \u003Cstrong>\u003Ccode>is_guest\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>bool\u003C\u002Fcode>): Whether the current user is a guest (not logged in).\u003Cbr \u002F>\n– \u003Cstrong>\u003Ccode>user\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>WP_User\u003C\u002Fcode>): The current user object. For guests, this will be an empty user object.\u003Cbr \u002F>\n– \u003Cstrong>\u003Ccode>allowed_roles\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>array\u003C\u002Fcode>): Roles explicitly allowed to use the coupon, in the format \u003Ccode>[role_id => role_name]\u003C\u002Fcode>.\u003Cbr \u002F>\n– \u003Cstrong>\u003Ccode>excluded_roles\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>array\u003C\u002Fcode>): Roles explicitly excluded from using the coupon, in the format \u003Ccode>[role_id => role_name]\u003C\u002Fcode>.\u003Cbr \u002F>\n– \u003Cstrong>\u003Ccode>effective_allowed_roles\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>array\u003C\u002Fcode>): The final calculated roles allowed to use the coupon, after considering exclusions, in the format \u003Ccode>[role_id => role_name]\u003C\u002Fcode>. This is the set of roles that can use the coupon.\u003C\u002Fp>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This program is free software; you can redistribute it and\u002For modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.\u003C\u002Fp>\n\u003Cp>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\u003C\u002Fp>\n\u003Cp>You should have received a copy of the GNU General Public License along with this program; if not, see \u003Ca href=\"http:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0.html\" rel=\"nofollow ugc\">http:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0.html\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Icon – Discount by Gregor Cresnar, from Noun Project, https:\u002F\u002Fthenounproject.com\u002Fbrowse\u002Ficons\u002Fterm\u002Fdiscount\u002F (CC BY 3.0)\u003C\u002Fp>\n\u003Cp>Icon – restriction by Puspito, from Noun Project, https:\u002F\u002Fthenounproject.com\u002Fbrowse\u002Ficons\u002Fterm\u002Frestriction\u002F (CC BY 3.0)\u003C\u002Fp>\n","Restrict the usage of WooCommerce coupons based on user roles.",1736,"2026-01-07T01:30:00.000Z",[102,103,104,105,106],"coupons","discount","role-restriction","user-roles","woocommerce","https:\u002F\u002Frunthings.dev\u002Fwordpress-plugins\u002Fwc-coupons-role-restrict\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Frunthings-wc-coupons-role-restrict.1.1.3.zip",{"slug":110,"name":111,"version":112,"author":5,"author_profile":6,"description":113,"short_description":114,"active_installs":115,"downloaded":116,"rating":9,"num_ratings":55,"last_updated":117,"tested_up_to":24,"requires_at_least":118,"requires_php":119,"tags":120,"homepage":126,"download_link":127,"security_score":9,"vuln_count":35,"unpatched_count":35,"last_vuln_date":36,"fetched_at":37},"runthings-secrets","RunThings Secrets","1.9.0","\u003Cp>RunThings Secrets is a WordPress plugin that allows you to securely share secrets such as passwords. Create a secret URL, and share it with someone instead of leaving a password in a chat log or email thread. Set the maximum views and expiration date, so that the secret doesn’t lurk around forever.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Secure encryption of secrets when stored in the database.\u003C\u002Fli>\n\u003Cli>Limit access by views and expiration date to enhance security.\u003C\u002Fli>\n\u003Cli>Allow viewer to delete the secret, or disable this option to prevent manual deletion.\u003C\u002Fli>\n\u003Cli>Easy sharing with a copy-to-clipboard button, featuring a helpful tooltip.\u003C\u002Fli>\n\u003Cli>Options to copy a plain link or a link with instructions and expiration terms.\u003C\u002Fli>\n\u003Cli>Spam protection powered by reCAPTCHA v3, including a score threshold setting.\u003C\u002Fli>\n\u003Cli>Customisable rate limiting, to prevent brute force attacks from bots.\u003C\u002Fli>\n\u003Cli>Timezone-aware expiration dates, synchronized with your site’s timezone settings.\u003C\u002Fli>\n\u003Cli>Flexible integration using shortcodes or WordPress Block Editor blocks.\u003C\u002Fli>\n\u003Cli>Configurable pages for ‘Add Secret,’ ‘Secret Created,’ and ‘View Secret’ actions.\u003C\u002Fli>\n\u003Cli>Customizable templates that can be overridden to fit your site’s design.\u003C\u002Fli>\n\u003Cli>Optional styling for forms can be enqueued as needed.\u003C\u002Fli>\n\u003Cli>Fully translatable.\u003C\u002Fli>\n\u003Cli>Object caching support, to improve performance.\u003C\u002Fli>\n\u003C\u002Ful>\n","Securely share secrets with a time-limited URL, avoiding passwords in chats or emails.",10,991,"2025-12-16T16:23:00.000Z","6.2","7.2",[121,122,123,124,125],"private-links","secure-sharing","temporary-links","time-limited-access","url-sharing","https:\u002F\u002Frunthings.dev\u002Fwordpress-plugins\u002Fsecrets\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Frunthings-secrets.1.9.0.zip",{"slug":129,"name":130,"version":131,"author":5,"author_profile":6,"description":132,"short_description":133,"active_installs":35,"downloaded":134,"rating":35,"num_ratings":35,"last_updated":135,"tested_up_to":24,"requires_at_least":25,"requires_php":83,"tags":136,"homepage":140,"download_link":141,"security_score":9,"vuln_count":35,"unpatched_count":35,"last_vuln_date":36,"fetched_at":37},"runthings-category-children-coupons","Category Children Coupons for WooCommerce","1.4.1","\u003Cp>Category Children Coupons for WooCommerce provides a complete replacement for WooCommerce’s built-in coupon category restrictions with additional flexibility:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Include children mode:\u003C\u002Fstrong> Select a parent category and all its subcategories are automatically included. With WooCommerce’s default restrictions, selecting “Clothing” only matches products directly in that category – not products in “T-Shirts” or “Trousers” subcategories. This plugin includes the entire category tree.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Exclude children mode:\u003C\u002Fstrong> Match only the specific categories you select, without including subcategories. This mirrors WooCommerce’s built-in behavior but is managed within this plugin’s unified interface.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Future-proof coupons:\u003C\u002Fstrong> The plugin stores your category selection and dynamically expands child categories at validation time – new subcategories are automatically included (or excluded) without editing existing coupons.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Four category restriction fields for complete control:\n\u003Cul>\n\u003Cli>Product categories (incl. children) – allowed categories with all descendants\u003C\u002Fli>\n\u003Cli>Exclude categories (incl. children) – blocked categories with all descendants\u003C\u002Fli>\n\u003Cli>Product categories (excl. children) – allowed categories only, no descendants\u003C\u002Fli>\n\u003Cli>Exclude categories (excl. children) – blocked categories only, no descendants\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Automatic subcategory handling based on your preference\u003C\u002Fli>\n\u003Cli>Works alongside WooCommerce’s other (non-category coupon) restrictions\u003C\u002Fli>\n\u003Cli>Customizable error messages via filter\u003C\u002Fli>\n\u003Cli>AutomateWoo compatibility – category restrictions are copied when generating coupons from templates\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>How It Works\u003C\u002Fh4>\n\u003Cp>When you select a category in an “(incl. children)” field, the plugin automatically includes all subcategories during validation. When you use an “(excl. children)” field, only the exact categories you select are matched. Selected categories with children included are validated at usage time, so the current children are automatically used, even if they have changed since the coupon was set up.\u003C\u002Fp>\n\u003Ch3>Filters\u003C\u002Fh3>\n\u003Ch4>runthings_category_children_coupons_error_message\u003C\u002Fh4>\n\u003Cp>Customize the error message shown when a coupon fails category validation.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Parameters:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>$message\u003C\u002Fcode> (string) – The default error message.\u003C\u002Fli>\n\u003Cli>\u003Ccode>$context\u003C\u002Fcode> (array) – Contains ‘coupon’ (WC_Coupon object) and ‘type’ (‘allowed’, ‘excluded’, ‘allowed_excl’, or ‘excluded_excl’).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Example:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>See \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frunthings-dev\u002Frunthings-category-children-coupons#filters\" rel=\"nofollow ugc\">readme.md on GitHub\u003C\u002Fa> for detailed code examples.\u003C\u002Fp>\n\u003Ch3>Additional Notes\u003C\u002Fh3>\n\u003Cp>Built by Matthew Harris of runthings.dev, copyright 2025.\u003C\u002Fp>\n\u003Cp>Visit \u003Ca href=\"https:\u002F\u002Frunthings.dev\u002F\" rel=\"nofollow ugc\">runthings.dev\u003C\u002Fa> for more WordPress plugins and resources.\u003C\u002Fp>\n\u003Cp>Contribute or report issues at the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frunthings-dev\u002Frunthings-category-children-coupons\" rel=\"nofollow ugc\">GitHub repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Icon – Discount by Gregor Cresnar, from Noun Project, https:\u002F\u002Fthenounproject.com\u002Fbrowse\u002Ficons\u002Fterm\u002Fdiscount\u002F (CC BY 3.0)\u003C\u002Fp>\n\u003Cp>Icon – Tree view by Paweł Gleń from Noun Project, https:\u002F\u002Fthenounproject.com\u002Fbrowse\u002Ficons\u002Fterm\u002Ftree-view\u002F (CC BY 3.0) – https:\u002F\u002Fthenounproject.com\u002Ficon\u002Ftree-view-3894745\u002F\u003C\u002Fp>\n","Restrict WooCommerce coupons by product categories, with options to include or exclude child\u002Fdescendant categories.",93,"2026-01-21T20:56:00.000Z",[137,102,138,139,106],"categories","restrictions","subcategories","https:\u002F\u002Frunthings.dev\u002Fwordpress-plugins\u002Fcategory-children-coupons\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Frunthings-category-children-coupons.1.4.1.zip",{"slug":143,"name":144,"version":145,"author":5,"author_profile":6,"description":146,"short_description":147,"active_installs":35,"downloaded":148,"rating":35,"num_ratings":35,"last_updated":149,"tested_up_to":24,"requires_at_least":66,"requires_php":26,"tags":150,"homepage":156,"download_link":157,"security_score":9,"vuln_count":35,"unpatched_count":35,"last_vuln_date":36,"fetched_at":37},"runthings-empty-media-title","Clear Media Title On Upload","2.0.1","\u003Cp>When you upload media to WordPress, the title field is automatically set to a slugified version of the filename. This often results in messy, unoptimized titles like “IMG-20240115-photo-final-v2” appearing in gallery captions, alt tags, or title attributes.\u003C\u002Fp>\n\u003Cp>This plugin clears the title field for newly uploaded media, ensuring that if a title is displayed anywhere, it’s one you’ve intentionally set yourself.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Automatically clears the title field for new media uploads\u003C\u002Fli>\n\u003Cli>Bulk action to clear titles on existing media library items\u003C\u002Fli>\n\u003Cli>Lightweight with no settings page required\u003C\u002Fli>\n\u003Cli>Developer-friendly with filters\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>How It Works\u003C\u002Fh4>\n\u003Cp>The plugin hooks into WordPress’s \u003Ccode>wp_insert_attachment_data\u003C\u002Fcode> filter and clears the \u003Ccode>post_title\u003C\u002Fcode> field for new uploads before they are saved to the database.\u003C\u002Fp>\n\u003Ch3>Filters\u003C\u002Fh3>\n\u003Ch4>runthings_emt_skip\u003C\u002Fh4>\n\u003Cp>Skip clearing the title for specific attachments.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Parameters:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>$skip\u003C\u002Fcode> (bool) – Whether to skip clearing the title. Default false.\u003C\u002Fli>\n\u003Cli>\u003Ccode>$data\u003C\u002Fcode> (array) – Attachment post data (slashed, sanitized, processed).\u003C\u002Fli>\n\u003Cli>\u003Ccode>$postarr\u003C\u002Fcode> (array) – Sanitized post data (not processed).\u003C\u002Fli>\n\u003Cli>\u003Ccode>$unsanitized_postarr\u003C\u002Fcode> (array) – Unsanitized post data.\u003C\u002Fli>\n\u003Cli>\u003Ccode>$update\u003C\u002Fcode> (bool) – Whether this is an update (always false for new uploads).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Example:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002F\u002F Skip clearing title for uploads by specific user\nadd_filter('runthings_emt_skip', function($skip, $data, $postarr) {\n    if (get_current_user_id() === 1) {\n        return true; \u002F\u002F Admin keeps auto-generated titles\n    }\n    return $skip;\n}, 10, 3);\n\n\n\n\u002F\u002F Skip clearing title if filename contains \"keep-title\"\nadd_filter('runthings_emt_skip', function($skip, $data, $postarr) {\n    $filename = $postarr['post_title'] ?? '';\n    if (strpos($filename, 'keep-title') !== false) {\n        return true;\n    }\n    return $skip;\n}, 10, 3);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>runthings_emt_mime_types\u003C\u002Fh4>\n\u003Cp>Filter which MIME types should have their title cleared. By default, all media types are affected.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Parameters:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>$allowed_mime_types\u003C\u002Fcode> (array) – Array of MIME type patterns. Default \u003Ccode>[]\u003C\u002Fcode> (all types).\u003C\u002Fli>\n\u003Cli>\u003Ccode>$attachment_mime_type\u003C\u002Fcode> (string) – The attachment’s MIME type.\u003C\u002Fli>\n\u003Cli>\u003Ccode>$postarr\u003C\u002Fcode> (array) – Sanitized post data.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Example:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002F\u002F Restrict to images only\nadd_filter('runthings_emt_mime_types', function($allowed_mime_types) {\n    return ['image'];\n});\n\n\n\n\u002F\u002F Restrict to images and PDFs only\nadd_filter('runthings_emt_mime_types', function($allowed_mime_types) {\n    return ['image', 'application\u002Fpdf'];\n});\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Additional Notes\u003C\u002Fh3>\n\u003Cp>Built by Matthew Harris of runthings.dev, copyright 2022-2026.\u003C\u002Fp>\n\u003Cp>Visit \u003Ca href=\"https:\u002F\u002Frunthings.dev\u002F\" rel=\"nofollow ugc\">runthings.dev\u003C\u002Fa> for more WordPress plugins and resources.\u003C\u002Fp>\n\u003Cp>Contribute or report issues at the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frunthings-dev\u002Frunthings-empty-media-title\" rel=\"nofollow ugc\">GitHub repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Insert space by Xinh Studio from Noun Project, https:\u002F\u002Fthenounproject.com\u002Fbrowse\u002Ficons\u002Fterm\u002Finsert-space\u002F (CC BY 3.0) – https:\u002F\u002Fthenounproject.com\u002Ficon\u002Finsert-space-239543\u002F\u003C\u002Fp>\n\u003Cp>Image by David Khai from Noun Project, https:\u002F\u002Fthenounproject.com\u002Fbrowse\u002Ficons\u002Fterm\u002Fimage\u002F (CC BY 3.0) – https:\u002F\u002Fthenounproject.com\u002Ficon\u002Fimage-661355\u002F\u003C\u002Fp>\n","Clears the media title field on upload, instead of setting it to the slugified filename.",85,"2026-01-27T12:13:00.000Z",[151,152,153,154,155],"attachment","images","media","title","upload","https:\u002F\u002Frunthings.dev\u002Fwordpress-plugins\u002Fempty-media-title\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Frunthings-empty-media-title.2.0.1.zip",{"slug":159,"name":160,"version":161,"author":5,"author_profile":6,"description":162,"short_description":163,"active_installs":35,"downloaded":164,"rating":35,"num_ratings":35,"last_updated":165,"tested_up_to":24,"requires_at_least":25,"requires_php":26,"tags":166,"homepage":171,"download_link":172,"security_score":9,"vuln_count":35,"unpatched_count":35,"last_vuln_date":36,"fetched_at":37},"runthings-taxonomy-template-selector","TaxoSelect – Taxonomy Template Selector","1.3.3","\u003Cp>Assign custom archive templates to categories, tags and other taxonomy terms, similar to how WordPress page templates work.\u003C\u002Fp>\n\u003Cp>Template selection is automatically enabled for all public taxonomies. Edit any term to choose a custom archive template.\u003C\u002Fp>\n\u003Ch4>Features:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Zero configuration – works out of the box for all public taxonomies\u003C\u002Fli>\n\u003Cli>Choose templates per-term from the term edit screen\u003C\u002Fli>\n\u003Cli>Works with categories, tags, and custom taxonomies\u003C\u002Fli>\n\u003Cli>Bulk edit support – assign templates to multiple terms at once\u003C\u002Fli>\n\u003Cli>Quick edit support – change templates inline without leaving the list table\u003C\u002Fli>\n\u003Cli>Optional admin column shows assigned template at a glance (hidden by default)\u003C\u002Fli>\n\u003Cli>Backwards compatible with legacy “Category Template:” headers\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Links:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Frunthings.dev\u002Fwordpress-plugins\u002Ftaxonomy-template-selector\u002F\" rel=\"nofollow ugc\">Plugin page\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frunthings-dev\u002Frunthings-taxonomy-template-selector\" rel=\"nofollow ugc\">GitHub repository\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This program is free software; you can redistribute it and\u002For modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\u003C\u002Fp>\n\u003Cp>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\u003C\u002Fp>\n\u003Cp>You should have received a copy of the GNU General Public License along with this program; if not, see \u003Ca href=\"https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-2.0.html\" rel=\"nofollow ugc\">https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-2.0.html\u003C\u002Fa>.\u003C\u002Fp>\n","Assign archive templates to categories, tags and other taxonomy terms.",114,"2026-01-14T14:13:00.000Z",[167,168,169,31,170],"archive","category","custom-template","template","https:\u002F\u002Frunthings.dev\u002Fwordpress-plugins\u002Ftaxonomy-template-selector\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Frunthings-taxonomy-template-selector.1.3.3.zip",{"slug":174,"name":175,"version":176,"author":5,"author_profile":6,"description":177,"short_description":178,"active_installs":35,"downloaded":179,"rating":35,"num_ratings":35,"last_updated":49,"tested_up_to":24,"requires_at_least":25,"requires_php":83,"tags":180,"homepage":182,"download_link":183,"security_score":9,"vuln_count":35,"unpatched_count":35,"last_vuln_date":36,"fetched_at":92},"runthings-wc-coupons-required-products","Required Products Coupons for WooCommerce","1.3.0","\u003Cp>This plugin allows you to restrict the usage of WooCommerce coupons unless specific products or variations are in the cart.\u003C\u002Fp>\n\u003Cp>You can specify which products are required for a coupon to be valid, providing more control over your discount strategies.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Restrict coupon usage based on all required products (including variations) being in the cart.\u003C\u002Fli>\n\u003Cli>Customize the error message via a filter.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Filters\u003C\u002Fh3>\n\u003Ch4>runthings_wc_coupons_required_products_missing_products\u003C\u002Fh4>\n\u003Cp>This filter allows third-party plugins to alter the missing required products before the coupon is rejected.\u003C\u002Fp>\n\u003Cp>For detailed documentation and advanced examples, see the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frunthings-dev\u002Frunthings-wc-coupons-required-products#filters\" rel=\"nofollow ugc\">full documentation on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Parameters:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>\u003Ccode>$missing_products\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>array\u003C\u002Fcode>): The missing products in the cart, in the format \u003Ccode>[product_id => quantity]\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>$coupon\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>WC_Coupon\u003C\u002Fcode>): The coupon object being validated.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>$required_products\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>array\u003C\u002Fcode>): The required products for the coupon, in the format \u003Ccode>[product_id => quantity]\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>$cart_products\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>array\u003C\u002Fcode>): Products found in the cart, in the format \u003Ccode>[product_id => quantity]\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>$cart\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>WC_Cart\u003C\u002Fcode>): The cart instance.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>runthings_wc_coupons_required_products_error_message\u003C\u002Fh4>\n\u003Cp>This filter allows customization of the error message shown when a coupon is not valid due to missing required products.\u003C\u002Fp>\n\u003Cp>For detailed documentation and advanced examples, see the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frunthings-dev\u002Frunthings-wc-coupons-required-products#filters\" rel=\"nofollow ugc\">full documentation on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Parameters:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>\u003Ccode>$message\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>string\u003C\u002Fcode>): The default error message, e.g., \u003Ccode>\"This coupon requires specific products in the cart.\"\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>$coupon\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>WC_Coupon\u003C\u002Fcode>): The coupon object being validated.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>$required_products\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>array\u003C\u002Fcode>): The required products for the coupon, in the format \u003Ccode>[product_id => quantity]\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>$missing_products\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>array\u003C\u002Fcode>): The missing products in the cart, in the format \u003Ccode>[product_id => quantity]\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This program is free software; you can redistribute it and\u002For modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.\u003C\u002Fp>\n\u003Cp>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\u003C\u002Fp>\n\u003Cp>You should have received a copy of the GNU General Public License along with this program; if not, see \u003Ca href=\"http:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0.html\" rel=\"nofollow ugc\">http:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0.html\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Icon – Discount by Gregor Cresnar, from Noun Project, https:\u002F\u002Fthenounproject.com\u002Fbrowse\u002Ficons\u002Fterm\u002Fdiscount\u002F (CC BY 3.0)\u003C\u002Fp>\n\u003Cp>Icon – restriction by Puspito, from Noun Project, https:\u002F\u002Fthenounproject.com\u002Fbrowse\u002Ficons\u002Fterm\u002Frestriction\u002F (CC BY 3.0)\u003C\u002Fp>\n","Restrict the usage of WooCommerce coupons unless required products are in the cart.",481,[102,103,181,106],"required-products","https:\u002F\u002Frunthings.dev\u002Fwordpress-plugins\u002Fwc-coupons-required-products\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Frunthings-wc-coupons-required-products.1.3.0.zip",{"slug":185,"name":186,"version":187,"author":5,"author_profile":6,"description":188,"short_description":189,"active_installs":35,"downloaded":190,"rating":35,"num_ratings":35,"last_updated":191,"tested_up_to":24,"requires_at_least":192,"requires_php":26,"tags":193,"homepage":198,"download_link":199,"security_score":9,"vuln_count":35,"unpatched_count":35,"last_vuln_date":36,"fetched_at":37},"runthings-wc-order-departments","Order Departments for WooCommerce","1.1.1","\u003Cp>Order Departments for WooCommerce enables large organizations to automatically route orders to the appropriate departments based on the products or the categories of the products in each order.\u003C\u002Fp>\n\u003Cp>For each department, a quick access menu is created below the WooCommerce.\u003C\u002Fp>\n\u003Cp>The built in WooCommerce order emails can be re-routed so that only the relevant dept gets the order notification thats relevant to them.\u003C\u002Fp>\n\u003Cp>The AutomateWoo integration then allows for further workflow automation based on department assignments.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Automatic Department Assignment\u003C\u002Fstrong>: Orders are automatically assigned to departments based on products\u002Fcategories\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Email Routing\u003C\u002Fstrong>: Route order emails to department-specific email addresses\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Admin Filtering\u003C\u002Fstrong>: Filter orders by department in WooCommerce admin\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Quick Access Menus\u003C\u002Fstrong>: Direct links to orders for each department\u003C\u002Fli>\n\u003Cli>\u003Cstrong>AutomateWoo Integration\u003C\u002Fstrong>: Complete set of actions, triggers, rules, and variables for workflow automation\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Department Variables\u003C\u002Fstrong>: Access department data in AutomateWoo workflows (names, emails, counts)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>HPOS Compatible\u003C\u002Fstrong>: Full support for WooCommerce High-Performance Order Storage\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>AutomateWoo Integration\u003C\u002Fh4>\n\u003Cp>This plugin provides complete AutomateWoo integration, allowing you to create sophisticated workflows based on department assignments. The integration includes custom actions, triggers, rules, and variables specifically designed for department-based automation.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Department Assignment Timing Tip\u003C\u002Fstrong>: This plugin assigns departments immediately during order processing using the product\u002Fcategory rules you configure in the taxonomy screens. This happens early enough to affect WooCommerce’s core systems like email sending. AutomateWoo workflows run later in the process, so relying solely on AutomateWoo actions for department assignment would be too late to override WooCommerce’s built-in emails and other core functionality.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Using AutomateWoo for Email Handling\u003C\u002Fstrong>: If you prefer to handle all emails through AutomateWoo workflows instead of the built-in email routing:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Disable WooCommerce’s default admin emails\u003C\u002Fli>\n\u003Cli>Use AutomateWoo’s email actions with department triggers for full control\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>This approach gives you the flexibility to use AutomateWoo’s advanced email features (templates, conditions, delays, etc.) while still benefiting from automatic department assignment.\u003C\u002Fp>\n\u003Ch4>Actions\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Set Order Department\u003C\u002Fstrong>: Replace all existing departments with one department\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Add Order Department\u003C\u002Fstrong>: Add a department while keeping existing ones\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Remove Order Department\u003C\u002Fstrong>: Remove a specific department from an order\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Clear Order Departments\u003C\u002Fstrong>: Remove all departments from an order\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Triggers\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Order Department Added\u003C\u002Fstrong>: Fires when a department is added to an order\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Order Department Removed\u003C\u002Fstrong>: Fires when a department is removed from an order\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Order Department Changed\u003C\u002Fstrong>: Fires when departments are modified in any way\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Rules\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Order Has Department\u003C\u002Fstrong>: Check if order has specific department(s)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Order Department Count\u003C\u002Fstrong>: Check the number of departments assigned\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Order Department Is\u003C\u002Fstrong>: Check if order’s departments exactly match a set\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Variables\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Collection Variables\u003C\u002Fstrong> (all departments):\u003Cbr \u002F>\n* \u003Ccode>{{ order.departments_names }}\u003C\u002Fcode>: List of all department names assigned to the order\u003Cbr \u002F>\n* \u003Ccode>{{ order.departments_emails }}\u003C\u002Fcode>: List of all department email addresses (automatically deduplicated)\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Per-Department Variables\u003C\u002Fstrong> (flexible access):\u003Cbr \u002F>\n* \u003Ccode>{{ order.department_names }}\u003C\u002Fcode>: Department names with index\u002Fall\u002Fcount options\u003Cbr \u002F>\n* \u003Ccode>{{ order.department_emails }}\u003C\u002Fcode>: Department emails with index\u002Fall\u002Fcount options\u003Cbr \u002F>\n* \u003Ccode>{{ order.department_count }}\u003C\u002Fcode>: Number of departments assigned to the order\u003C\u002Fp>\n\u003Ch4>Variable Parameters\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Collection Variables\u003C\u002Fstrong> support \u003Ccode>separator\u003C\u002Fcode>, \u003Ccode>prefix\u003C\u002Fcode>, and \u003Ccode>suffix\u003C\u002Fcode> parameters:\u003Cbr \u002F>\n* \u003Ccode>{{ order.departments_names | separator: ';' }}\u003C\u002Fcode> \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> “Sales;Technical;Support”\u003Cbr \u002F>\n* \u003Ccode>{{ order.departments_names | prefix: 'Dept: ', suffix: ' Team' }}\u003C\u002Fcode> \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> “Dept: Sales Team, Dept: Technical Team”\u003Cbr \u002F>\n* \u003Ccode>{{ order.departments_emails | separator: '; ' }}\u003C\u002Fcode> \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> “sales@example.com; tech@example.com”\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Per-Department Variables\u003C\u002Fstrong> support \u003Ccode>mode\u003C\u002Fcode>, \u003Ccode>index\u003C\u002Fcode>, \u003Ccode>separator\u003C\u002Fcode>, \u003Ccode>prefix\u003C\u002Fcode>, and \u003Ccode>suffix\u003C\u002Fcode> parameters:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Mode Options:\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Ccode>{{ order.department_names }}\u003C\u002Fcode> \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> First department name (default mode: index)\u003Cbr \u002F>\n* \u003Ccode>{{ order.department_names | mode: 'all' }}\u003C\u002Fcode> \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> All department names\u003Cbr \u002F>\n* \u003Ccode>{{ order.department_names | mode: 'count' }}\u003C\u002Fcode> \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Number of departments\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Index Access:\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Ccode>{{ order.department_names | index: '1' }}\u003C\u002Fcode> \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> First department name\u003Cbr \u002F>\n* \u003Ccode>{{ order.department_names | index: '2' }}\u003C\u002Fcode> \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Second department name\u003Cbr \u002F>\n* \u003Ccode>{{ order.department_emails | index: '1' }}\u003C\u002Fcode> \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> All emails from first department\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Formatting:\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Ccode>{{ order.department_names | prefix: 'Team: ', suffix: ' Dept' }}\u003C\u002Fcode> \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> “Team: Sales Dept”\u003Cbr \u002F>\n* \u003Ccode>{{ order.department_emails | separator: '; ' }}\u003C\u002Fcode> \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Multiple emails separated by semicolon\u003C\u002Fp>\n\u003Ch4>Variable Use Cases\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Cstrong>Sales & Technical Support\u003C\u002Fstrong>: Route orders containing software to Technical, hardware to Sales\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Use \u003Ccode>{{ order.departments_emails }}\u003C\u002Fcode> to automatically send order notifications to the right team\u003C\u002Fli>\n\u003Cli>Create conditional workflows based on \u003Ccode>{{ order.department_count }}\u003C\u002Fcode> for mixed orders\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Multi-location Fulfillment\u003C\u002Fstrong>: Route orders to appropriate warehouses\u002Flocations\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Include \u003Ccode>{{ order.departments_names }}\u003C\u002Fcode> in fulfillment emails to specify handling location\u003C\u002Fli>\n\u003Cli>Use department variables in webhook payloads to external fulfillment systems\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Specialized Teams\u003C\u002Fstrong>: Route complex products to specialist departments\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Send detailed instructions using \u003Ccode>{{ order.department_names }}\u003C\u002Fcode> for single-department orders\u003C\u002Fli>\n\u003Cli>Create escalation workflows when \u003Ccode>{{ order.department_names | mode: 'count' }}\u003C\u002Fcode> exceeds normal thresholds\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>CRM Integration\u003C\u002Fstrong>: Trigger department-specific workflows in external systems\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Pass \u003Ccode>{{ order.departments_names }}\u003C\u002Fcode> to CRM systems for proper lead assignment\u003C\u002Fli>\n\u003Cli>Use \u003Ccode>{{ order.departments_emails }}\u003C\u002Fcode> for automated follow-up sequences\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Developer Filters\u003C\u002Fh3>\n\u003Cp>The plugin provides filters to customize email handling behavior:\u003C\u002Fp>\n\u003Ch4>Email ID Filters\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>runthings_wc_order_departments_customer_email_ids\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Customize which customer-facing email IDs have their reply-to headers modified by department emails.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter('runthings_wc_order_departments_customer_email_ids', function($email_ids) { \u002F\u002F Add custom customer email ID $email_ids[] = 'custom_customer_email'; \u002F\u002F Remove an email ID if you don't want it modified $key = array_search('customer_new_account', $email_ids); if ($key !== false) { unset($email_ids[$key]); } return $email_ids; });\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Default customer email IDs\u003C\u002Fstrong>: \u003Ccode>customer_completed_order\u003C\u002Fcode>, \u003Ccode>customer_cancelled_order\u003C\u002Fcode>, \u003Ccode>customer_failed_order\u003C\u002Fcode>, \u003Ccode>customer_on_hold_order\u003C\u002Fcode>, \u003Ccode>customer_invoice\u003C\u002Fcode>, \u003Ccode>customer_note\u003C\u002Fcode>, \u003Ccode>customer_refunded_order\u003C\u002Fcode>, \u003Ccode>customer_processing_order\u003C\u002Fcode>, \u003Ccode>customer_new_account\u003C\u002Fcode>, \u003Ccode>customer_reset_password\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>runthings_wc_order_departments_admin_email_ids\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Customize which admin-facing email IDs have their recipients modified to use department emails.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter('runthings_wc_order_departments_admin_email_ids', function($email_ids) { \u002F\u002F Add custom admin email ID $email_ids[] = 'custom_admin_notification'; \u002F\u002F Remove an email ID if you don't want it modified $key = array_search('backorder', $email_ids); if ($key !== false) { unset($email_ids[$key]); } return $email_ids; });\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Default admin email IDs\u003C\u002Fstrong>: \u003Ccode>new_order\u003C\u002Fcode>, \u003Ccode>cancelled_order\u003C\u002Fcode>, \u003Ccode>failed_order\u003C\u002Fcode>, \u003Ccode>backorder\u003C\u002Fcode>\u003C\u002Fp>\n\u003Ch4>Use Cases for Email Filters\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Custom Email Types\u003C\u002Fstrong>: Add support for emails from other plugins or custom implementations\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Selective Email Routing\u003C\u002Fstrong>: Exclude specific email types from department-based routing\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Third-party Integration\u003C\u002Fstrong>: Ensure compatibility with other email-related plugins\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Configuration\u003C\u002Fh3>\n\u003Ch4>Setting Up Departments\u003C\u002Fh4>\n\u003Col>\n\u003Cli>Navigate to \u003Cstrong>WooCommerce > Order Departments\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>Add new departments with:\n\u003Cul>\n\u003Cli>Department name\u003C\u002Fli>\n\u003Cli>Email addresses (semicolon-separated)\u003C\u002Fli>\n\u003Cli>Associated product categories\u003C\u002Fli>\n\u003Cli>Specific products\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>Email Routing\u003C\u002Fh4>\n\u003Cp>The plugin provides two types of email routing:\u003C\u002Fp>\n\u003Ch4>Admin Email Routing\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Admin emails\u003C\u002Fstrong> (new order notifications, etc.) are automatically routed to department email addresses when departments are assigned to orders.\u003C\u002Fp>\n\u003Ch4>Customer Email Reply-To Override\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Customer emails\u003C\u002Fstrong> can have their reply-to headers modified based on department assignments. Configure this at \u003Cstrong>Settings > Order Departments\u003C\u002Fstrong>:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Override reply-to with department emails\u003C\u002Fstrong>: Enable\u002Fdisable the reply-to override feature\u003C\u002Fli>\n\u003Cli>\u003Cstrong>For multi-department orders\u003C\u002Fstrong>: Choose behavior when multiple unique email addresses are involved:\n\u003Cul>\n\u003Cli>\u003Cstrong>Use all department emails\u003C\u002Fstrong>: Add all unique department emails to reply-to header\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Skip override – fall back to WooCommerce default\u003C\u002Fstrong>: Use WooCommerce’s default reply-to setting\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Email routing behavior\u003C\u002Fstrong>:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Single department orders\u003C\u002Fstrong>: Always use that department’s email for reply-to (when override enabled)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Multi-department orders with same email\u003C\u002Fstrong>: Treated as single department\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Multi-department orders with different emails\u003C\u002Fstrong>: Behavior depends on settings choice\u003C\u002Fli>\n\u003Cli>\u003Cstrong>If the order’s assigned departments have NO email addresses\u003C\u002Fstrong>: The plugin does not attempt to override emails and WooCommerce emails work normally\u003C\u002Fli>\n\u003Cli>\u003Cstrong>If WooCommerce emails are disabled\u003C\u002Fstrong>: No emails will be sent regardless of department email configuration\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Notes\u003C\u002Fstrong>:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Each department can have multiple email addresses (semicolon-separated)\u003C\u002Fli>\n\u003Cli>You can simply set the default WooCommerce admin email address in each department to maintain the same recipient while enabling department-based routing\u003C\u002Fli>\n\u003Cli>Email routing is determined per-order based on that order’s specific department assignments\u003C\u002Fli>\n\u003Cli>If the same email address is listed in multiple departments assigned to an order, only one email will be sent to that address (duplicates are automatically removed)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>AutomateWoo Workflows\u003C\u002Fh4>\n\u003Cp>Create workflows using the department triggers, rules, and variables to:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Send notifications to external systems using department email variables\u003C\u002Fli>\n\u003Cli>Create tickets in support systems with department information\u003C\u002Fli>\n\u003Cli>Update CRM records with department assignments\u003C\u002Fli>\n\u003Cli>Trigger fulfillment processes based on department rules\u003C\u002Fli>\n\u003Cli>Route emails to department-specific addresses using \u003Ccode>{{ order.departments_emails }}\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Include department context in communications using \u003Ccode>{{ order.departments_names }}\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Requirements\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>WordPress 6.3+\u003C\u002Fli>\n\u003Cli>WooCommerce 8.2+\u003C\u002Fli>\n\u003Cli>PHP 7.4+\u003C\u002Fli>\n\u003Cli>AutomateWoo (optional, for workflow automation)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Additional Notes\u003C\u002Fh3>\n\u003Cp>Built by Matthew Harris of runthings.dev, copyright 2025.\u003C\u002Fp>\n\u003Cp>Visit \u003Ca href=\"https:\u002F\u002Frunthings.dev\u002F\" rel=\"nofollow ugc\">runthings.dev\u003C\u002Fa> for more WordPress plugins and resources.\u003C\u002Fp>\n\u003Cp>Contribute or report issues at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frunthings-dev\u002Frunthings-wc-order-departments\" rel=\"nofollow ugc\">GitHub repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This program is free software; you can redistribute it and\u002For modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.\u003C\u002Fp>\n\u003Cp>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\u003C\u002Fp>\n\u003Cp>You should have received a copy of the GNU General Public License along with this program; if not, see \u003Ca href=\"http:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0.html\" rel=\"nofollow ugc\">http:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0.html\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Icon – SEO by pictohaven from [https:\u002F\u002Fthenounproject.com\u002Fbrowse\u002Ficons\u002Fterm\u002Fseo\u002F](Noun Project) (CC BY 3.0)\u003C\u002Fp>\n","Automatically assign WooCommerce orders to departments based on products\u002Fcategories with email routing and AutomateWoo integration.",298,"2026-01-07T13:29:00.000Z","6.3",[194,195,196,197,106],"automation","departments","email-routing","orders","https:\u002F\u002Frunthings.dev\u002Fwordpress-plugins\u002Frunthings-wc-order-departments\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Frunthings-wc-order-departments.1.1.1.zip"]