[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fqvkZN9ChDLXIr-OSaaV35786vlB2gW7kST0omqTLp3c":3,"$fVAtRBgDr5el5BOabjllaeWNonBMy5N9g3UsFHGsvUro":468},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":13,"last_updated":14,"tested_up_to":15,"requires_at_least":16,"requires_php":17,"tags":18,"homepage":23,"download_link":24,"security_score":25,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":27,"vulnerabilities":28,"developer":29,"crawl_stats":26,"alternatives":36,"analysis":128,"fingerprints":449},"bw-coupon","BW Coupon","1.5.3","Myridia Company","https:\u002F\u002Fprofiles.wordpress.org\u002Fveto\u002F","\u003Cp>WooCommerce Seller can create PDF coupons for sale. Customer will get an attached PDF coupon after purchase the coupon.\u003C\u002Fp>\n\u003Cp>Homepage: https:\u002F\u002Fgithub.com\u002Fmyridia\u002Fbw-coupon\u003C\u002Fp>\n","WooCommerce Seller can create PDF coupons for sale. Customer will get an attached PDF coupon after purchase the coupon.",10,3081,0,"2024-07-28T12:37:00.000Z","6.6.5","4.7","8.0",[19,20,21,22],"coupon","pdf","products","woocommerce","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbw-coupon.1.5.3.zip",92,null,"2026-04-06T09:54:40.288Z",[],{"slug":30,"display_name":7,"profile_url":8,"plugin_count":31,"total_installs":11,"avg_security_score":32,"avg_patch_time_days":33,"trust_score":34,"computed_at":35},"veto",4,94,30,90,"2026-04-08T11:05:49.004Z",[37,58,74,88,104],{"slug":38,"name":39,"version":40,"author":41,"author_profile":42,"description":43,"short_description":44,"active_installs":45,"downloaded":46,"rating":13,"num_ratings":13,"last_updated":47,"tested_up_to":48,"requires_at_least":49,"requires_php":23,"tags":50,"homepage":54,"download_link":55,"security_score":56,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":57},"wc-invoice-pdf","WC Recurring Invoice","1.7.3","ole1986","https:\u002F\u002Fprofiles.wordpress.org\u002Fole1986\u002F","\u003Cp>The WC Recurring Invoice (aka WC Invoice PDF) extends WooCommerce to generate PDF invoices while supporting recurring and automated Email submission.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>FEATURES\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Invoice overview\u003C\u002Fli>\n\u003Cli>Manage invoice status and due date\u003C\u002Fli>\n\u003Cli>Email submission schedule for invoices\u003C\u002Fli>\n\u003Cli>Individual payment reminder (internal and customer)\u003C\u002Fli>\n\u003Cli>Customizable PDF template and Email content through placeholders\u003C\u002Fli>\n\u003Cli>[NEW] Support for XRechnung according to EN16931\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>WooCommerce Extended\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>[PRODUCT] Subscription product (Webspace) to trigger recurring Orders\u003C\u002Fli>\n\u003Cli>[PRODUCT] Individual “Service” product allowing to customize units (E.g PCS, hours, mins, any other)\u003C\u002Fli>\n\u003Cli>[ORDER] Generate and preview PDF invoice for any WooCommerce order\u003C\u002Fli>\n\u003Cli>[ORDER] Configurable subscription type (yearly, monthly) per WooCommerce order\u003C\u002Fli>\n\u003Cli>[ORDER] Additional Email recipient (CC) in WooCommerce billing info\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fole1986\u002Fwc-invoice-pdf\u002Freleases\" rel=\"nofollow ugc\">RELEASE NOTES\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fole1986\u002Fwc-invoice-pdf\" rel=\"nofollow ugc\">MIT LICENSED\u003C\u002Fa>\u003C\u002Fp>\n","WooCommerce invoice PDF generator for recurring \u002F non-recurring orders and Email submission.",40,7992,"2026-03-13T07:40:00.000Z","6.9.4","3.1",[51,52,53,20,22],"billing","custom-products","invoicing","https:\u002F\u002Fgithub.com\u002Fole1986\u002Fwc-invoice-pdf\u002Freleases","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwc-invoice-pdf.1.7.3.zip",100,"2026-03-15T15:16:48.613Z",{"slug":59,"name":60,"version":61,"author":62,"author_profile":63,"description":64,"short_description":65,"active_installs":33,"downloaded":66,"rating":13,"num_ratings":13,"last_updated":67,"tested_up_to":68,"requires_at_least":69,"requires_php":23,"tags":70,"homepage":71,"download_link":72,"security_score":73,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":27},"simple-pdf-coupon-for-woocommerce","Simple PDF Coupon for WooCommerce","1.0.0","Lemontec","https:\u002F\u002Fprofiles.wordpress.org\u002Flemontec\u002F","\u003Cp>WooCommerce Simple PDF Coupon module to create PDF coupons\u003C\u002Fp>\n\u003Cp>Define a new product, using the “Simple PDF Coupon”-Type.\u003Cbr \u002F>\nAdjust coupon sujet, positions and font-sizes in “WooCommerce > Simple PDF Coupons”.\u003C\u002Fp>\n\u003Cp>Customers can define their own coupon value on product detail page by using a range-slider.\u003Cbr \u002F>\nFurthermore dustomers can add a personal greeting to the coupon.\u003C\u002Fp>\n\u003Cp>When ordering this product, a WooCommerce-coupon is created automatically and the customer receives a PDF-document with all this ordered coupons.\u003C\u002Fp>\n\u003Cp>The reason for this plugin is that there are so many bad and complicated plugins out there.\u003Cbr \u002F>\nAs a web agency (LEMONTEC), we often need this solution, which we want to share with others.\u003C\u002Fp>\n\u003Cp>Future-Version:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Display PDF Coupons depending on order status\u003C\u002Fli>\n\u003Cli>Integrate QR Codes on PDF Coupons\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Terms of use: https:\u002F\u002Flemontec.at\u002FLEMONTEC-AGB.pdf\u003Cbr \u002F>\nPrivacy policis: https:\u002F\u002Flemontec.at\u002Fdatenschutzerklaerung\u002F\u003C\u002Fp>\n","WooCommerce Simple PDF Coupon module to create PDF coupons",924,"2021-04-23T11:47:00.000Z","5.7.15","4.6",[19,20,22],"https:\u002F\u002Flemontec.at","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fsimple-pdf-coupon-for-woocommerce.zip",85,{"slug":75,"name":76,"version":61,"author":77,"author_profile":78,"description":79,"short_description":80,"active_installs":13,"downloaded":81,"rating":13,"num_ratings":13,"last_updated":23,"tested_up_to":82,"requires_at_least":23,"requires_php":23,"tags":83,"homepage":23,"download_link":86,"security_score":56,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":87},"coupons-on-products-woo","Apply Coupons on Product Pages – For WooCommerce","RelyWP","https:\u002F\u002Fprofiles.wordpress.org\u002Frelywp\u002F","\u003Cp>A simple plugin to allow your customers to apply coupons on product pages, and see the discounted price immediately.\u003C\u002Fp>\n\u003Cp>All you need to do is install the plugin, and the apply coupon field will then appear on all your product pages.\u003C\u002Fp>\n\u003Cp>When the customer enters a coupon code, it will automatically update the prices shown on the product pages, showing both the original price, and the sale price.\u003C\u002Fp>\n","Allows customers to apply coupons on product pages and see the discounted price immediately.",564,"6.8.5",[84,85,21,22],"coupons","product","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcoupons-on-products-woo.1.0.0.zip","2026-03-15T10:48:56.248Z",{"slug":89,"name":90,"version":91,"author":92,"author_profile":93,"description":94,"short_description":95,"active_installs":13,"downloaded":96,"rating":13,"num_ratings":13,"last_updated":97,"tested_up_to":48,"requires_at_least":98,"requires_php":17,"tags":99,"homepage":102,"download_link":103,"security_score":56,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":27},"runthings-wc-coupons-required-products","Required Products Coupons for WooCommerce","1.3.0","runthings.dev","https:\u002F\u002Fprofiles.wordpress.org\u002Frunthingsdev\u002F","\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.",525,"2026-02-11T20:08:00.000Z","6.4",[84,100,101,22],"discount","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":105,"name":106,"version":107,"author":108,"author_profile":109,"description":110,"short_description":111,"active_installs":112,"downloaded":113,"rating":56,"num_ratings":114,"last_updated":115,"tested_up_to":116,"requires_at_least":117,"requires_php":118,"tags":119,"homepage":123,"download_link":124,"security_score":125,"vuln_count":126,"unpatched_count":13,"last_vuln_date":127,"fetched_at":27},"woocommerce-pdf-invoices-packing-slips","PDF Invoices & Packing Slips for WooCommerce","5.9.2","WP Overnight","https:\u002F\u002Fprofiles.wordpress.org\u002Fwpovernight\u002F","\u003Cp>This WooCommerce extension automatically adds a PDF or XML invoice (e-invoicing) to the order confirmation emails sent out to your customers. Includes a basic template (additional templates are available from \u003Ca href=\"https:\u002F\u002Fwpovernight.com\u002Fdownloads\u002Fwoocommerce-pdf-invoices-packing-slips-bundle\u002F\" rel=\"nofollow ugc\">WP Overnight\u003C\u002Fa>) as well as the possibility to modify\u002Fcreate your own templates. In addition, you can choose to download or print invoices and packing slips from the WooCommerce order admin.\u003C\u002Fp>\n\u003Ch4>Main features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Automatically attach invoice PDF or XML to WooCommerce emails of your choice\u003C\u002Fli>\n\u003Cli>Download the PDF or XML Invoice \u002F PDF Packing Slip from the order admin page\u003C\u002Fli>\n\u003Cli>Choose from a range of e‑document formats: UBL 2.1, Peppol BIS 3.0, CII D16B, Factur‑X 1.0, ZUGFeRD 1.0, and ZUGFeRD 2.0.\u003C\u002Fli>\n\u003Cli>Generate PDF invoices \u002F packing slips in bulk\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Fully customizable\u003C\u002Fstrong> HTML\u002FCSS invoice templates\u003C\u002Fli>\n\u003Cli>Download invoices from the My Account page\u003C\u002Fli>\n\u003Cli>Sequential invoice numbers\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Available in:\u003C\u002Fstrong> Czech, Dutch, English, Finnish, French, German, Hungarian, Italian, Japanese (see FAQ for adding custom fonts!), Norwegian, Portuguese, Polish, Romanian, Russian, Slovak, Slovenian, Spanish, Swedish & Ukrainian\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Free extensions\u003C\u002Fh4>\n\u003Cp>The following free extensions are available to add additional features to the plugin:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwpovernight\u002Fwoocommerce-pdf-ips-mpdf\" rel=\"nofollow ugc\">PDF Invoices & Packing Slips for WooCommerce – mPDF\u003C\u002Fa>\u003C\u002Fstrong>: Adds support for RTL layout and Arabic script.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwpovernight\u002Fwoocommerce-pdf-ips-mpdf-cjk\" rel=\"nofollow ugc\">PDF Invoices & Packing Slips for WooCommerce – mPDF CJK\u003C\u002Fa>\u003C\u002Fstrong>: Provides support for Chinese, Japanese, and Korean (CJK) fonts for the mPDF extension.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwpovernight\u002Fwoocommerce-pdf-ips-unicode\" rel=\"nofollow ugc\">PDF Invoices & Packing Slips for WooCommerce – Unicode Language Pack\u003C\u002Fa>\u003C\u002Fstrong>: Adds support for Chinese, Japanese, and Korean scripts.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwpovernight\u002Fwcpdf-taxes-summary\" rel=\"nofollow ugc\">PDF Invoices & Packing Slips for WooCommerce – Taxes Summary\u003C\u002Fa>\u003C\u002Fstrong>: Adds a taxes summary table after the order details.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Premium extensions\u003C\u002Fh4>\n\u003Cp>In addition to this, we offer several premium extensions:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Create\u002Femail PDF Proforma Invoices, Credit Notes (for Refunds), email Packing Slips, automatic upload to Dropbox, Google Drive & more with \u003Ca href=\"https:\u002F\u002Fwpovernight.com\u002Fdownloads\u002Fwoocommerce-pdf-invoices-packing-slips-professional\u002F\" rel=\"nofollow ugc\">PDF Invoices & Packing Slips for WooCommerce Professional\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Get the complete feature set, including \u003Cstrong>Professional\u003C\u002Fstrong>, \u003Cstrong>Premium Templates\u003C\u002Fstrong>, and additional features with the \u003Ca href=\"https:\u002F\u002Fwpovernight.com\u002Fdownloads\u002Fwoocommerce-pdf-invoices-packing-slips-bundle\u002F\" rel=\"nofollow ugc\">WooCommerce PDF Invoices & Packing Slips Plus Bundle\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Add Peppol network delivery for WooCommerce invoices and credit notes right inside your invoicing workflow. \u003Ca href=\"https:\u002F\u002Fwpovernight.com\u002Fdownloads\u002Fwoocommerce-edocuments-peppol\u002F\" rel=\"nofollow ugc\">eDocuments for WooCommerce: Peppol\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Automatically send new orders or packing slips to your printer as soon as the customer orders! \u003Ca href=\"https:\u002F\u002Fwpovernight.com\u002Fdownloads\u002Fwoocommerce-automatic-order-printing-printnode\u002F\" rel=\"nofollow ugc\">WooCommerce Automatic Order Printing (PrintNode)\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Enable EU VAT number collection, automatic validation and reverse-charge logic right in your WooCommerce store. \u003Ca href=\"https:\u002F\u002Fwpovernight.com\u002Fdownloads\u002Fwoocommerce-eu-vat-compliance\u002F\" rel=\"nofollow ugc\">WooCommerce European (EU\u002FUK\u002FNorway\u002FSwitzerland) VAT Compliance\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Fully customizable\u003C\u002Fh4>\n\u003Cp>In addition to a number of default settings (including a custom header\u002Flogo) and several layout fields that you can use out of the box, the plugin contains HTML\u002FCSS-based templates that allow for customization & full control over the PDF output. Copy the templates to your theme folder and you don’t have to worry that your customizations will be overwritten when you update the plugin.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Insert customer header image\u002Flogo\u003C\u002Fli>\n\u003Cli>Modify shop data \u002F footer \u002F disclaimer etc. on the invoices & packing slips\u003C\u002Fli>\n\u003Cli>Select paper size (Letter or A4)\u003C\u002Fli>\n\u003Cli>Translation ready\u003C\u002Fli>\n\u003C\u002Ful>\n","Create, print & automatically email PDF or XML Invoices & PDF Packing Slips for WooCommerce orders.",300000,21842244,1849,"2026-03-31T14:04:00.000Z","7.0","4.4","7.4",[120,121,20,122,22],"invoices","packing-slips","ubl","https:\u002F\u002Fwpovernight.com\u002Fdownloads\u002Fwoocommerce-pdf-invoices-packing-slips-bundle\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwoocommerce-pdf-invoices-packing-slips.5.9.2.zip",88,12,"2026-02-17 17:18:34",{"attackSurface":129,"codeSignals":272,"taintFlows":378,"riskAssessment":436,"analyzedAt":448},{"hooks":130,"ajaxHandlers":243,"restRoutes":244,"shortcodes":270,"cronEvents":271,"entryPointCount":31,"unprotectedCount":31},[131,137,140,146,150,154,158,160,163,167,171,175,179,183,187,191,195,199,203,207,211,215,219,223,226,231,235,239],{"type":132,"name":133,"callback":134,"file":135,"line":136},"filter","safe_style_css","bwc_add_css_attributes","includes\\class-bwc-data.php",374,{"type":132,"name":133,"callback":138,"file":135,"line":139},"bwc_remove_css_attributes",376,{"type":141,"name":142,"callback":143,"file":144,"line":145},"action","plugins_loaded","my_plugin_init","includes\\functions.php",25,{"type":132,"name":147,"callback":148,"priority":11,"file":144,"line":149},"plugin_row_meta","bwc_row_meta",29,{"type":141,"name":151,"callback":152,"file":144,"line":153},"admin_menu","bwc_menu",50,{"type":141,"name":155,"callback":156,"file":144,"line":157},"admin_enqueue_scripts","bwc_scripts",74,{"type":141,"name":155,"callback":159,"file":144,"line":73},"bwc_plugin_styles",{"type":132,"name":161,"callback":162,"file":144,"line":56},"manage_edit-shop_order_columns","bwc_columns",{"type":141,"name":164,"callback":165,"file":144,"line":166},"manage_shop_order_posts_custom_column","bwc_render_columns",115,{"type":132,"name":168,"callback":169,"file":144,"line":170},"manage_edit-shop_coupon_columns","bwc_coupon_columns",147,{"type":141,"name":172,"callback":173,"file":144,"line":174},"manage_shop_coupon_posts_custom_column","bwc_render_coupon_columns",165,{"type":132,"name":176,"callback":177,"priority":11,"file":144,"line":178},"post_row_actions","bwc_coupon_action_link",209,{"type":141,"name":180,"callback":181,"file":144,"line":182},"delete_post","bwc_coupon_delete",249,{"type":141,"name":184,"callback":185,"file":144,"line":186},"edit_post","bwc_order_update",263,{"type":141,"name":188,"callback":189,"file":144,"line":190},"delete_user","bwc_user_delete",285,{"type":141,"name":192,"callback":193,"priority":11,"file":144,"line":194},"woocommerce_process_product_meta","BWC_Data::save",312,{"type":141,"name":196,"callback":197,"file":144,"line":198},"add_meta_boxes","bwc_product_add",317,{"type":141,"name":200,"callback":201,"file":144,"line":202},"admin_print_scripts","bwc_admin_scripts",337,{"type":141,"name":204,"callback":205,"file":144,"line":206},"admin_notices","bwc_admin_notices",353,{"type":141,"name":208,"callback":209,"file":144,"line":210},"admin_footer","bwc_bulk",385,{"type":141,"name":212,"callback":213,"file":144,"line":214},"load-edit.php","bwc_bulk_action",404,{"type":141,"name":216,"callback":217,"file":144,"line":218},"woocommerce_order_status_completed","bwc_automatically_send_completed",491,{"type":141,"name":220,"callback":221,"file":144,"line":222},"woocommerce_order_status_processing","bwc_automatically_send_processing",507,{"type":141,"name":224,"callback":225,"file":144,"line":96},"woocommerce_thankyou","bwc_woocommerce_auto_complete_order",{"type":141,"name":227,"callback":228,"file":229,"line":230},"admin_head","bwc_add_mce_button","includes\\pdf.php",24,{"type":132,"name":232,"callback":233,"file":229,"line":234},"mce_external_plugins","bwc_add_tinymce_plugin",31,{"type":132,"name":236,"callback":237,"file":229,"line":238},"mce_buttons","bwc_register_mce_button",32,{"type":141,"name":240,"callback":241,"file":229,"line":242},"rest_api_init","bwc_register_route",56,[],[245,253,259,264],{"namespace":246,"route":247,"methods":248,"callback":250,"permissionCallback":251,"file":229,"line":252},"bwc\u002Ffoo","\u002Fbar",[249],"GET","bwc_get_foo","__return_true",59,{"namespace":254,"route":255,"methods":256,"callback":257,"permissionCallback":251,"file":229,"line":258},"bwc\u002Fv1","\u002Fpdf\u002F(?P\u003Cid>\\d+)",[249],"bwc_get_pdf",65,{"namespace":254,"route":260,"methods":261,"callback":262,"permissionCallback":251,"file":229,"line":263},"\u002Fsend_pdf\u002F(?P\u003Cid>\\d+)",[249],"bwc_send_pdf",70,{"namespace":254,"route":265,"methods":266,"callback":268,"permissionCallback":251,"file":229,"line":269},"\u002Fpdf",[267],"POST","bwc_post_pdf",75,[],[],{"dangerousFunctions":273,"sqlUsage":274,"outputEscaping":301,"fileOperations":371,"externalRequests":13,"nonceChecks":372,"capabilityChecks":373,"bundledLibraries":374},[],{"prepared":275,"raw":276,"locations":277},3,9,[278,282,284,286,289,291,293,295,298],{"file":279,"line":280,"context":281},"includes\\coupons.php",28,"$wpdb->get_results() with variable interpolation",{"file":279,"line":283,"context":281},60,{"file":279,"line":285,"context":281},76,{"file":144,"line":287,"context":288},253,"$wpdb->query() with variable interpolation",{"file":144,"line":290,"context":288},275,{"file":144,"line":292,"context":281},294,{"file":144,"line":294,"context":288},307,{"file":229,"line":296,"context":297},129,"$wpdb->get_row() with variable interpolation",{"file":299,"line":300,"context":288},"uninstall.php",33,{"escaped":302,"rawEcho":302,"locations":303},36,[304,307,308,309,311,312,314,316,318,320,322,324,326,328,331,333,334,335,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370],{"file":305,"line":33,"context":306},"admin\\includes\\gs-middle-options-page.php","raw output",{"file":305,"line":302,"context":306},{"file":305,"line":258,"context":306},{"file":305,"line":310,"context":306},79,{"file":305,"line":73,"context":306},{"file":305,"line":313,"context":306},116,{"file":305,"line":315,"context":306},119,{"file":305,"line":317,"context":306},125,{"file":305,"line":319,"context":306},141,{"file":305,"line":321,"context":306},162,{"file":305,"line":323,"context":306},172,{"file":305,"line":325,"context":306},181,{"file":305,"line":327,"context":306},200,{"file":329,"line":330,"context":306},"admin\\options-admin-page.php",18,{"file":135,"line":332,"context":306},118,{"file":135,"line":332,"context":306},{"file":135,"line":332,"context":306},{"file":135,"line":315,"context":306},{"file":135,"line":337,"context":306},217,{"file":135,"line":339,"context":306},221,{"file":135,"line":341,"context":306},233,{"file":135,"line":343,"context":306},237,{"file":135,"line":345,"context":306},251,{"file":135,"line":347,"context":306},255,{"file":135,"line":349,"context":306},267,{"file":135,"line":351,"context":306},271,{"file":135,"line":353,"context":306},344,{"file":279,"line":355,"context":306},227,{"file":144,"line":357,"context":306},128,{"file":144,"line":359,"context":306},176,{"file":144,"line":361,"context":306},179,{"file":144,"line":363,"context":306},184,{"file":144,"line":365,"context":306},187,{"file":144,"line":367,"context":306},190,{"file":144,"line":369,"context":306},193,{"file":144,"line":136,"context":306},7,1,2,[375],{"name":376,"version":26,"knownCves":377},"dompdf",[],[379,412],{"entryPoint":380,"graph":381,"unsanitizedCount":373,"severity":411},"\u003Coptions-admin-page> (admin\\options-admin-page.php:0)",{"nodes":382,"edges":406},[383,388,393,396,400],{"id":384,"type":385,"label":386,"file":329,"line":387},"n0","source","$_GET",15,{"id":389,"type":390,"label":391,"file":329,"line":330,"wp_function":392},"n1","sink","echo() [XSS]","echo",{"id":394,"type":385,"label":386,"file":329,"line":395},"n2",16,{"id":397,"type":398,"label":399,"file":329,"line":395},"n3","transform","→ bwc_send_email()",{"id":401,"type":390,"label":402,"file":403,"line":404,"wp_function":405},"n4","file_put_contents() [File Write]","includes\\mail.php",57,"file_put_contents",[407,409,410],{"from":384,"to":389,"sanitized":408},false,{"from":394,"to":397,"sanitized":408},{"from":397,"to":401,"sanitized":408},"medium",{"entryPoint":413,"graph":414,"unsanitizedCount":387,"severity":435},"\u003Cgs-middle-options-page> (admin\\includes\\gs-middle-options-page.php:0)",{"nodes":415,"edges":431},[416,419,423,426,427,429],{"id":384,"type":385,"label":417,"file":305,"line":418},"$_POST (x10)",13,{"id":389,"type":390,"label":420,"file":305,"line":421,"wp_function":422},"update_option() [Settings Manipulation]",22,"update_option",{"id":394,"type":385,"label":424,"file":305,"line":425},"$_POST (x4)",49,{"id":397,"type":390,"label":391,"file":305,"line":310,"wp_function":392},{"id":401,"type":385,"label":428,"file":305,"line":313},"$_SERVER['REQUEST_URI']",{"id":430,"type":390,"label":391,"file":305,"line":313,"wp_function":392},"n5",[432,433,434],{"from":384,"to":389,"sanitized":408},{"from":394,"to":397,"sanitized":408},{"from":401,"to":430,"sanitized":408},"low",{"summary":437,"deductions":438},"The \"bw-coupon\" plugin v1.5.3 exhibits several security concerns despite having no known historical vulnerabilities. The static analysis reveals a significant attack surface, with all 4 REST API routes lacking permission callbacks. This means any authenticated user, potentially even those with minimal privileges, could interact with these endpoints, opening the door for unauthorized actions or data manipulation. Furthermore, the plugin has a moderate concern regarding output escaping, with only 50% of outputs being properly escaped. This increases the risk of cross-site scripting (XSS) vulnerabilities if user-supplied data is directly rendered in the output without sanitization.\n\nThe taint analysis shows 2 flows with unsanitized paths, which is a direct indicator of potential vulnerabilities. While these are not classified as critical or high severity, unsanitized paths can still lead to various security issues if they involve user-controlled input that is not properly validated or neutralized. The presence of file operations, while not inherently risky, warrants attention when combined with other vulnerabilities like unsanitized paths, as it could potentially lead to local file inclusion or other file manipulation attacks. The plugin does have some good practices, including some use of prepared statements for SQL queries and the inclusion of a nonce check, but these are overshadowed by the unprotected REST API endpoints and the taint flow issues.\n\nOverall, the plugin's security posture is concerning due to the lack of authorization checks on its REST API and the presence of unsanitized paths in its code. While the absence of known CVEs and a history of vulnerabilities is a positive sign, it does not guarantee the plugin's current security. The identified weaknesses, particularly the unprotected entry points and taint flows, present a tangible risk to WordPress installations. It is recommended to address the permission callbacks on REST API routes and thoroughly review and sanitize the identified unsanitized paths.",[439,441,444,446],{"reason":440,"points":11},"REST API routes without permission callbacks",{"reason":442,"points":443},"Unescaped output (50% proper)",5,{"reason":445,"points":11},"Taint flows with unsanitized paths (2 flows)",{"reason":447,"points":275},"Bundled library 'dompdf'","2026-03-17T01:17:36.870Z",{"wat":450,"direct":457},{"assetPaths":451,"generatorPatterns":454,"scriptPaths":455,"versionParams":456},[452,453],"\u002Fwp-content\u002Fplugins\u002Fbw-coupon\u002Fadmin\u002Fjs\u002Fbwc.js","\u002Fwp-content\u002Fplugins\u002Fbw-coupon\u002Fadmin\u002Fcss\u002Fstyles.css",[],[],[],{"cssClasses":458,"htmlComments":461,"htmlAttributes":462,"restEndpoints":465,"jsGlobals":466,"shortcodeOutput":467},[459,460],"bwc_preview_pdf","bwc_email_pdf",[],[463,464],"data-coupon","data-domain",[],[],[],{"slug":4,"current_version":6,"total_versions":31,"versions":469},[470,476,483,490],{"version":6,"download_url":24,"svn_tag_url":471,"released_at":26,"has_diff":408,"diff_files_changed":472,"diff_lines":26,"trac_diff_url":473,"vulnerabilities":474,"is_current":475},"https:\u002F\u002Fplugins.svn.wordpress.org\u002Fbw-coupon\u002Ftags\u002F1.5.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fbw-coupon%2Ftags%2F1.5.2&new_path=%2Fbw-coupon%2Ftags%2F1.5.3",[],true,{"version":477,"download_url":478,"svn_tag_url":479,"released_at":26,"has_diff":408,"diff_files_changed":480,"diff_lines":26,"trac_diff_url":481,"vulnerabilities":482,"is_current":408},"1.5.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbw-coupon.1.5.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fbw-coupon\u002Ftags\u002F1.5.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fbw-coupon%2Ftags%2F1.4.9&new_path=%2Fbw-coupon%2Ftags%2F1.5.2",[],{"version":484,"download_url":485,"svn_tag_url":486,"released_at":26,"has_diff":408,"diff_files_changed":487,"diff_lines":26,"trac_diff_url":488,"vulnerabilities":489,"is_current":408},"1.4.9","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbw-coupon.1.4.9.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fbw-coupon\u002Ftags\u002F1.4.9\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fbw-coupon%2Ftags%2F1.4.8&new_path=%2Fbw-coupon%2Ftags%2F1.4.9",[],{"version":491,"download_url":492,"svn_tag_url":493,"released_at":26,"has_diff":408,"diff_files_changed":494,"diff_lines":26,"trac_diff_url":26,"vulnerabilities":495,"is_current":408},"1.4.8","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbw-coupon.1.4.8.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fbw-coupon\u002Ftags\u002F1.4.8\u002F",[],[]]