{"id":387459,"date":"2026-10-15T11:41:21","date_gmt":"2026-10-15T11:41:21","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/hdwebmobile-gift-cards\/"},"modified":"2026-10-15T11:41:04","modified_gmt":"2026-10-15T11:41:04","slug":"hdwebmobile-gift-cards","status":"publish","type":"plugin","link":"https:\/\/vi.wordpress.org\/plugins\/hdwebmobile-gift-cards\/","author":9757813,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.3","requires":"6.9","requires_php":"7.4","requires_plugins":null,"header_name":"HDWebmobile Gift Cards","header_author":"htrxuan - Han Tran","header_description":"Sell digital gift cards redeemed through WooCommerce's own native coupon field -- no custom checkout UI, no file uploads.","assets_banners_color":"5c9585","last_updated":"2026-10-15 11:41:04","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/paypal.me\/htrxuan\/20","header_plugin_uri":"https:\/\/hdwebmobile.com\/plugins\/hdwebmobile-gift-cards\/","header_author_uri":"https:\/\/hdwebmobile.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":113,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"htrxuan","date":"2026-10-15 11:41:04","revision":3748326}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3754172,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3754172,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3748325,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3748325,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3748325,"resolution":"1","location":"assets","locale":"","width":1600,"height":1000},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3748325,"resolution":"2","location":"assets","locale":"","width":1600,"height":1000},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3748325,"resolution":"3","location":"assets","locale":"","width":1600,"height":1000},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3748325,"resolution":"4","location":"assets","locale":"","width":1600,"height":1000}},"screenshots":{"1":"The \"This is a gift card\" checkbox on the Product Data General tab.","2":"The gift-card delivery email, showing the code and balance.","3":"Redeeming a code through WooCommerce's own \"Have a coupon?\" field at checkout.","4":"The admin Gift Cards list, with the manual-issue form expanded."}},"plugin_section":[],"plugin_tags":[326,5472,19968,5495,286],"plugin_category":[45],"plugin_contributors":[254181],"plugin_business_model":[],"class_list":["post-387459","plugin","type-plugin","status-publish","hentry","plugin_tags-coupon","plugin_tags-digital-products","plugin_tags-gift-cards","plugin_tags-store-credit","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-htrxuan","plugin_committers-htrxuan"],"banners":{"banner":"https:\/\/ps.w.org\/hdwebmobile-gift-cards\/assets\/banner-772x250.png?rev=3748325","banner_2x":"https:\/\/ps.w.org\/hdwebmobile-gift-cards\/assets\/banner-1544x500.png?rev=3748325","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/hdwebmobile-gift-cards\/assets\/icon-128x128.png?rev=3754172","icon_2x":"https:\/\/ps.w.org\/hdwebmobile-gift-cards\/assets\/icon-256x256.png?rev=3754172","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/hdwebmobile-gift-cards\/assets\/screenshot-1.png?rev=3748325","caption":"The \"This is a gift card\" checkbox on the Product Data General tab."},{"src":"https:\/\/ps.w.org\/hdwebmobile-gift-cards\/assets\/screenshot-2.png?rev=3748325","caption":"The gift-card delivery email, showing the code and balance."},{"src":"https:\/\/ps.w.org\/hdwebmobile-gift-cards\/assets\/screenshot-3.png?rev=3748325","caption":"Redeeming a code through WooCommerce's own \"Have a coupon?\" field at checkout."},{"src":"https:\/\/ps.w.org\/hdwebmobile-gift-cards\/assets\/screenshot-4.png?rev=3748325","caption":"The admin Gift Cards list, with the manual-issue form expanded."}],"raw_content":"<!--section=description-->\n<p>HDWebmobile Gift Cards turns any simple WooCommerce product into a digital gift card. Flag a product as a gift card, and completing an order for it issues a unique, randomly generated code by email -- one code per unit purchased. Customers redeem a code exactly the way they already redeem a discount coupon: by typing it into WooCommerce's own \"Have a coupon?\" field at checkout. There is no new redemption screen to learn, and it works on both the classic cart\/checkout and the Block Checkout.<\/p>\n\n<p>Arbitrary file upload is one of the most severe vulnerability classes a store plugin can have. This plugin has zero file-upload surface at all -- every gift card code is generated server-side with PHP's cryptographically secure random_bytes(), never accepted as user-supplied input for the code's value, closing off that entire vulnerability class by construction.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li>Turn any simple product into a gift card with a single checkbox -- automatically forced virtual, no shipping involved<\/li>\n<li>Completing an order issues one unique, cryptographically random code per unit purchased, emailed to the purchaser<\/li>\n<li>Redemption reuses WooCommerce's own native \"Apply coupon\" field -- works on classic Cart\/Checkout and Block Checkout, no custom UI to build or maintain<\/li>\n<li>Partial redemption: if a cart total is smaller than the gift card's balance, only the amount actually used is deducted, leaving the correct remainder for next time<\/li>\n<li>Optional expiry, set in days from issuance, checked at redemption time<\/li>\n<li>\"My Gift Cards\" section on the customer's My Account dashboard showing remaining balance on any gift card they've purchased<\/li>\n<li>Admin list of every issued gift card (code, balance, status, purchaser, issued\/expiry dates), with search and status filter<\/li>\n<li>Admin can manually issue a gift card of any amount to any email, for customer-service or refund scenarios<\/li>\n<li>Zero file-upload surface -- codes are always generated server-side, never accepted as arbitrary input<\/li>\n<\/ul>\n\n<h4>Limitations (please read before installing)<\/h4>\n\n<ul>\n<li>Fixed value only -- a gift card's value is the product's own price; there is no customer-selectable\/variable amount at purchase in this version<\/li>\n<li>No separate recipient-delivery flow -- the code is emailed to the purchaser only, with no \"send to a friend's email with a gift message\" field; the purchaser can forward the email themselves<\/li>\n<li>No redemption audit ledger -- only the current balance is stored, not a history of every order that redeemed against a code<\/li>\n<\/ul>\n\n<h4>Enjoying this plugin?<\/h4>\n\n<p>If it helps your site, please consider <a href=\"https:\/\/wordpress.org\/support\/plugin\/hdwebmobile-gift-cards\/reviews\/#new-post\">leaving an honest review on WordPress.org<\/a> -- it helps other WordPress users find it. Found a problem or have an idea? Please <a href=\"https:\/\/wordpress.org\/support\/plugin\/hdwebmobile-gift-cards\/\">open a support topic<\/a> first so it can be fixed.<\/p>\n\n<h3>How to Use<\/h3>\n\n<h4>1. Create a gift card product<\/h4>\n\n<p>Create (or edit) a simple product, check \"This is a gift card\" in the General tab of Product Data (Screenshot 1), and set its price -- that price becomes the gift card's value. Save; the product is automatically set to virtual.<\/p>\n\n<h4>2. A customer buys it<\/h4>\n\n<p>When an order containing a gift-card product is marked Completed, this plugin issues one code per unit purchased and emails each one to the purchaser (Screenshot 2).<\/p>\n\n<h4>3. The code is redeemed like any coupon<\/h4>\n\n<p>At checkout, the recipient enters the code in the \"Have a coupon?\" field (Screenshot 3) -- no separate gift-card field, no new page to learn.<\/p>\n\n<h4>4. Balances update automatically<\/h4>\n\n<p>When the redeeming order completes, the gift card's balance is reduced by exactly the amount that order actually used. A card with balance remaining can be reused on a later order.<\/p>\n\n<h4>5. Manage gift cards from the admin<\/h4>\n\n<p>Go to <strong>WooCommerce &gt; Gift Cards<\/strong> (Screenshot 4) to search issued codes, filter by status, or manually issue a new gift card to any email address.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/hdwebmobile-gift-cards<\/code> directory, or install the plugin through the WordPress plugins screen directly.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress. WooCommerce must already be installed and active.<\/li>\n<li>Go to <strong>WooCommerce &gt; Gift Cards Settings<\/strong> to optionally set a default expiry period.<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: gift-card product checkbox, code issuance on order completion, redemption via WooCommerce's native coupon field, partial-balance tracking, optional expiry, My Account gift-card list, admin list table and manual issuance.<\/li>\n<\/ul>","raw_excerpt":"Sell digital gift cards redeemed through WooCommerce's own native coupon field -- no custom checkout UI, no file uploads.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/387459","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=387459"}],"author":[{"embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/htrxuan"}],"wp:attachment":[{"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=387459"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=387459"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=387459"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=387459"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=387459"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=387459"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}