{"id":223032,"date":"2025-02-28T07:35:27","date_gmt":"2025-02-28T07:35:27","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/whmcs-domain-search\/"},"modified":"2026-05-05T13:29:03","modified_gmt":"2026-05-05T13:29:03","slug":"domain-search-for-whmcs","status":"publish","type":"plugin","link":"https:\/\/os.wordpress.org\/plugins\/domain-search-for-whmcs\/","author":18312399,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"3.1.0","stable_tag":"3.1.0","tested":"6.7.5","requires":"5.0","requires_php":"8.0","requires_plugins":null,"header_name":"Domain Search for WHMCS","header_author":"Shipon Karmakar","header_description":"A WordPress plugin that integrates a WHMCS domain search form and redirects users to WHMCS for domain registration.","assets_banners_color":"486681","last_updated":"2026-05-05 13:29:03","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/domain-search-for-whmcs\/","header_author_uri":"https:\/\/profiles.wordpress.org\/shiponkarmakar\/","rating":5,"author_block_rating":0,"active_installs":200,"downloads":1932,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"shiponkarmakar","date":"2025-02-28 15:51:05"},"1.0.3":{"tag":"1.0.3","author":"shiponkarmakar","date":"2025-03-01 08:11:28"},"1.0.4":{"tag":"1.0.4","author":"shiponkarmakar","date":"2025-03-04 05:01:10"},"1.0.5":{"tag":"1.0.5","author":"shiponkarmakar","date":"2025-03-06 18:37:53"},"2.0.0":{"tag":"2.0.0","author":"shiponkarmakar","date":"2025-03-08 05:47:39"},"2.0.1":{"tag":"2.0.1","author":"shiponkarmakar","date":"2025-03-09 15:34:39"},"2.0.2":{"tag":"2.0.2","author":"shiponkarmakar","date":"2025-03-23 17:14:06"},"2.0.3":{"tag":"2.0.3","author":"shiponkarmakar","date":"2025-04-03 17:47:44"},"3.0.0":{"tag":"3.0.0","author":"shiponkarmakar","date":"2026-05-02 19:55:26"},"3.0.1":{"tag":"3.0.1","author":"shiponkarmakar","date":"2026-05-05 12:47:19"},"3.1.0":{"tag":"3.1.0","author":"shiponkarmakar","date":"2026-05-05 13:29:03"}},"upgrade_notice":{"3.1.0":"<p>Feature release. Adds a full Appearance customizer with live preview \u2014 control every color and radius of the front-end form from the admin dashboard. Includes responsive admin fixes and a regenerated translation template. Safe drop-in upgrade from 3.0.0.<\/p>","3.0.0":"<p>Major redesign, security hardening, and new developer filters. <strong>Now requires PHP 8.0+.<\/strong> All existing settings and custom shortcodes are preserved across the upgrade.<\/p>","2.1.0":"<p>Recommended update \u2014 fixes a leaking nonce on the front-end form and an <code>uninstall.php<\/code> bug that left orphaned options behind.<\/p>","2.0.0":"<p>Update your WHMCS URL in the settings after upgrading.<\/p>","1.5.0":"<p>Update recommended for improved security and styling fixes.<\/p>","1.0.0":"<p>Initial version.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"Icon-128x128.gif":{"filename":"Icon-128x128.gif","revision":3287071,"resolution":"128x128","location":"assets","locale":"","width":150,"height":150},"Icon-256x256.gif":{"filename":"Icon-256x256.gif","revision":3287071,"resolution":"256x256","location":"assets","locale":"","width":150,"height":150}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3256113,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3256113,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2","1.0.3","1.0.4","1.0.5","2.0.0","2.0.1","2.0.2","2.0.3","3.0.0","3.0.1","3.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3523406,"resolution":"1","location":"assets","locale":"","width":1920,"height":1440},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3523406,"resolution":"2","location":"assets","locale":"","width":1920,"height":1440},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3523406,"resolution":"3","location":"assets","locale":"","width":1920,"height":1440},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3523406,"resolution":"4","location":"assets","locale":"","width":1920,"height":1440}},"screenshots":{"1":"Front-end domain search form rendered on a marketing page.","2":"Admin dashboard \u2014 Default Settings tab.","3":"Admin dashboard \u2014 Custom Shortcodes tab with multiple branded forms.","4":"Admin dashboard \u2014 Customization reference for theme designers.","5":"Admin dashboard \u2014 built-in Support center with forum link, email, and system info."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[239273,24441,1456,23300,32609],"plugin_category":[],"plugin_contributors":[191464],"plugin_business_model":[],"class_list":["post-223032","plugin","type-plugin","status-publish","hentry","plugin_tags-domain-registration","plugin_tags-domain-search","plugin_tags-hosting","plugin_tags-web-hosting","plugin_tags-whmcs","plugin_contributors-shiponkarmakar","plugin_committers-shiponkarmakar"],"banners":{"banner":"https:\/\/ps.w.org\/domain-search-for-whmcs\/assets\/banner-772x250.jpg?rev=3256113","banner_2x":"https:\/\/ps.w.org\/domain-search-for-whmcs\/assets\/banner-1544x500.jpg?rev=3256113","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/domain-search-for-whmcs\/assets\/Icon-128x128.gif?rev=3287071","icon_2x":"https:\/\/ps.w.org\/domain-search-for-whmcs\/assets\/Icon-256x256.gif?rev=3287071","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/domain-search-for-whmcs\/assets\/screenshot-1.png?rev=3523406","caption":"Front-end domain search form rendered on a marketing page."},{"src":"https:\/\/ps.w.org\/domain-search-for-whmcs\/assets\/screenshot-2.png?rev=3523406","caption":"Admin dashboard \u2014 Default Settings tab."},{"src":"https:\/\/ps.w.org\/domain-search-for-whmcs\/assets\/screenshot-3.png?rev=3523406","caption":"Admin dashboard \u2014 Custom Shortcodes tab with multiple branded forms."},{"src":"https:\/\/ps.w.org\/domain-search-for-whmcs\/assets\/screenshot-4.png?rev=3523406","caption":"Admin dashboard \u2014 Customization reference for theme designers."}],"raw_content":"<!--section=description-->\n<p><strong>Domain Search for WHMCS<\/strong> is a lightweight WordPress plugin that adds a polished domain search form to your site and hands the visitor off to your existing WHMCS billing portal to complete registration.<\/p>\n\n<p>It is purpose-built for hosting providers, domain resellers, ICANN registrars, and white-label hosting brands who already use WHMCS as their billing platform.<\/p>\n\n<h4>TL;DR<\/h4>\n\n<ul>\n<li>Install, activate, paste <code>[domain_search_for_whmcs]<\/code> on any page.<\/li>\n<li>No JavaScript on the front-end. No external requests. No tracking.<\/li>\n<li>Create unlimited branded shortcodes pointing at different WHMCS installs.<\/li>\n<li>Modern admin dashboard with built-in support center.<\/li>\n<li>Translation-ready, multisite-friendly, GDPR-friendly.<\/li>\n<\/ul>\n\n<h4>Why this plugin<\/h4>\n\n<p>Most WHMCS integrations are heavy or hard-coded. This one is the opposite: a single, dependency-free shortcode that drops into any layout. It does one thing and does it cleanly.<\/p>\n\n<ul>\n<li>No external API calls \u2014 submits directly to your own WHMCS install.<\/li>\n<li>No JavaScript on the public site (admin-only JS for the dashboard tabs).<\/li>\n<li>Works with classic themes, block themes, and every major page builder.<\/li>\n<li>Visitor queries never touch a third-party server.<\/li>\n<\/ul>\n\n<h4>Key features<\/h4>\n\n<p><strong>Drop-in shortcode<\/strong> \u2014 <code>[domain_search_for_whmcs]<\/code> works in posts, pages, widgets, FSE template parts, page-builder shortcode blocks, or via <code>do_shortcode()<\/code> in PHP.<\/p>\n\n<p><strong>Unlimited custom shortcodes<\/strong> \u2014 create branded forms each pointing at a different WHMCS install with its own placeholder. Reference them as <code>[domain_search_for_whmcs id=\"sc_xxxxx\"]<\/code>.<\/p>\n\n<p><strong>Modern admin dashboard<\/strong> \u2014 tabbed UI, click-to-copy shortcodes, an \"At a Glance\" overview (custom shortcode count, active host, HTTPS status), and a built-in Support tab.<\/p>\n\n<p><strong>Built for speed<\/strong> \u2014 one ~1.7 KB CSS file. No JavaScript, no jQuery, no Ajax, no remote assets, no tracking pixels.<\/p>\n\n<p><strong>Theme-agnostic styling<\/strong> \u2014 six stable, well-named CSS classes you can target from any theme or page builder.<\/p>\n\n<p><strong>Developer extensibility<\/strong> \u2014 five filter hooks let plugins and themes change behavior without forking. See <em>Developer Filters<\/em> below.<\/p>\n\n<p><strong>Secure by default<\/strong> \u2014 nonce verification, capability checks, sanitized I\/O, properly escaped output.<\/p>\n\n<p><strong>Translation-ready<\/strong> \u2014 every string wrapped in the <code>domain-search-for-whmcs<\/code> text domain.<\/p>\n\n<p><strong>Privacy-friendly<\/strong> \u2014 no data collection, no cookies, no remote services. See <em>Privacy<\/em> below.<\/p>\n\n<h4>Perfect for<\/h4>\n\n<ul>\n<li>Hosting providers running WHMCS as their billing system.<\/li>\n<li>Domain resellers with multiple storefronts (TLD niches, geographic markets, white-label brands).<\/li>\n<li>ICANN registrars offering retail domain sales through WordPress.<\/li>\n<li>Agencies building landing pages for hosting clients.<\/li>\n<\/ul>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>The shortcode renders a clean HTML form on your page.<\/li>\n<li>When a visitor submits it, the browser navigates (in a new tab) to:\n   https:\/\/your-whmcs.com\/cart.php?a=add&amp;domain=register&amp;query=THE-DOMAIN<\/li>\n<li>WHMCS handles availability, pricing, TLDs, cart, and checkout \u2014 exactly as it would for any other entry point.<\/li>\n<\/ol>\n\n<p>You do <strong>not<\/strong> need to expose any WHMCS API credentials in WordPress. The plugin never calls WHMCS APIs; it just hands off the visitor.<\/p>\n\n<h4>Roadmap<\/h4>\n\n<ul>\n<li>Optional Gutenberg block wrapper.<\/li>\n<li>Optional Elementor and Bricks widgets.<\/li>\n<li>Optional inline Ajax availability check (off by default; would call your WHMCS Domain Availability API).<\/li>\n<li>Bulk import\/export of custom shortcodes.<\/li>\n<\/ul>\n\n<h3>Quick Start<\/h3>\n\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Go to <strong>Settings \u2192 Domain Search for WHMCS<\/strong>.<\/li>\n<li>On the <strong>Default Settings<\/strong> tab, enter your WHMCS base URL (e.g. <code>https:\/\/billing.example.com<\/code>) and a placeholder (\"Find your domain\").<\/li>\n<li>Click <strong>Save Changes<\/strong>.<\/li>\n<li>Add <code>[domain_search_for_whmcs]<\/code> to any post or page.<\/li>\n<\/ol>\n\n<p>That's it. Visitors who type a domain and submit will land on your WHMCS cart with the search pre-filled.<\/p>\n\n<h3>Shortcode Reference<\/h3>\n\n<p><strong>Default shortcode<\/strong> (uses the <em>Default Settings<\/em> tab values):<\/p>\n\n<pre><code>[domain_search_for_whmcs]\n<\/code><\/pre>\n\n<p><strong>Custom shortcode<\/strong> (uses settings from a specific custom shortcode):<\/p>\n\n<pre><code>[domain_search_for_whmcs id=\"sc_1234567890_456\"]\n<\/code><\/pre>\n\n<p>The <code>id<\/code> value is generated when you create a custom shortcode and is shown in the table on the <strong>Custom Shortcodes<\/strong> tab. Click it to copy.<\/p>\n\n<p>If a custom <code>id<\/code> is provided but doesn't exist (e.g. it was deleted), the plugin falls back to the default settings rather than rendering nothing.<\/p>\n\n<h3>Developer Filters<\/h3>\n\n<p>The plugin exposes five filters for runtime customization. All filters fire inside the shortcode renderer, so you can vary output per page, per user, or per locale.<\/p>\n\n<h4>dsfwhmcs_whmcs_url<\/h4>\n\n<p>Filter the resolved WHMCS base URL right before the form is rendered.<\/p>\n\n<pre><code>add_filter('dsfwhmcs_whmcs_url', function($url, $atts) {\n    \/\/ Send logged-in users to the staff portal.\n    return is_user_logged_in() ? 'https:\/\/members.example.com' : $url;\n}, 10, 2);\n<\/code><\/pre>\n\n<p><strong>Returns:<\/strong> <code>string<\/code> \u2014 the WHMCS base URL.<\/p>\n\n<h4>dsfwhmcs_placeholder<\/h4>\n\n<p>Filter the placeholder text dynamically.<\/p>\n\n<pre><code>add_filter('dsfwhmcs_placeholder', function($placeholder, $atts) {\n    return get_locale() === 'fr_FR' ? 'Trouvez votre domaine' : $placeholder;\n}, 10, 2);\n<\/code><\/pre>\n\n<p><strong>Returns:<\/strong> <code>string<\/code> \u2014 the placeholder text.<\/p>\n\n<h4>dsfwhmcs_form_action<\/h4>\n\n<p>Filter the full form action URL (default: <code>{whmcs_url}\/cart.php<\/code>).<\/p>\n\n<pre><code>add_filter('dsfwhmcs_form_action', function($action, $whmcs_url, $atts) {\n    return trailingslashit($whmcs_url) . 'domainchecker.php';\n}, 10, 3);\n<\/code><\/pre>\n\n<p><strong>Returns:<\/strong> <code>string<\/code> \u2014 the action URL.<\/p>\n\n<h4>dsfwhmcs_form_method<\/h4>\n\n<p>Switch the form method. Defaults to <code>GET<\/code>; return <code>'POST'<\/code> for legacy WHMCS configurations that prefer it.<\/p>\n\n<pre><code>add_filter('dsfwhmcs_form_method', function() {\n    return 'POST';\n});\n<\/code><\/pre>\n\n<p><strong>Returns:<\/strong> <code>string<\/code> \u2014 <code>'GET'<\/code> or <code>'POST'<\/code>.<\/p>\n\n<h4>dsfwhmcs_shortcode_html<\/h4>\n\n<p>Filter the rendered HTML before it's returned to WordPress. Useful for wrapping the form, injecting analytics attributes, or replacing markup wholesale.<\/p>\n\n<pre><code>add_filter('dsfwhmcs_shortcode_html', function($html, $atts) {\n    return '&lt;div class=\"my-wrapper\"&gt;' . $html . '&lt;\/div&gt;';\n}, 10, 2);\n<\/code><\/pre>\n\n<p><strong>Returns:<\/strong> <code>string<\/code> \u2014 the final HTML.<\/p>\n\n<h3>Compatibility<\/h3>\n\n<ul>\n<li><strong>WordPress:<\/strong> 5.0+ (tested up to 6.7.5)<\/li>\n<li><strong>PHP:<\/strong> 8.0+ required (PHP 8.1, 8.2, 8.3 fully tested)<\/li>\n<li><strong>WHMCS:<\/strong> any version supporting the standard <code>cart.php?a=add&amp;domain=register<\/code> URL (WHMCS 6.0+)<\/li>\n<li><strong>Multisite:<\/strong> fully compatible; settings are per-site<\/li>\n<li><strong>Page builders:<\/strong> Gutenberg, Classic Editor, Elementor, Beaver Builder, Bricks, Divi, Oxygen, Breakdance<\/li>\n<li><strong>Caching plugins:<\/strong> fully compatible (the form is static HTML)<\/li>\n<li><strong>HTTPS:<\/strong> strongly recommended for both WordPress and WHMCS \u2014 the dashboard's \"At a Glance\" panel flags HTTP connections<\/li>\n<\/ul>\n\n<h3>Troubleshooting<\/h3>\n\n<h4>The form submits but I get a 404 or blank page on WHMCS<\/h4>\n\n<p>Check the WHMCS URL in <strong>Default Settings<\/strong>. It should be the base URL of your WHMCS install (e.g. <code>https:\/\/billing.example.com<\/code>) \u2014 not <code>https:\/\/billing.example.com\/cart.php<\/code>. The plugin appends <code>cart.php<\/code> itself.<\/p>\n\n<h4>The form looks unstyled<\/h4>\n\n<p>Make sure your theme isn't blocking plugin stylesheets. The plugin enqueues a file named <code>domain-search-for-whmcs.css<\/code> on the front-end. If your theme has aggressive CSS overrides, target the <code>.dsfwhmcs-*<\/code> classes from the <em>Customization<\/em> tab.<\/p>\n\n<h4>Visitors land on the cart but the search box is empty<\/h4>\n\n<p>This usually means the URL was reached without the query parameter. Check that no caching plugin is stripping query strings from form submissions.<\/p>\n\n<h4>The Support tab is cut off on my phone<\/h4>\n\n<p>Update to 3.1.0+. The tab strip is now horizontally scrollable on narrow screens.<\/p>\n\n<h4>Other plugins' notices appear inside the green dashboard header<\/h4>\n\n<p>That's a WordPress core behavior. Update to 3.0.0+ where the plugin uses <code>&lt;hr class=\"wp-header-end\"&gt;<\/code> to push third-party notices below the header.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>Domain Search for WHMCS is privacy-respecting by design.<\/p>\n\n<ul>\n<li><strong>No tracking.<\/strong> The plugin sets no cookies and loads no remote scripts.<\/li>\n<li><strong>No data collection.<\/strong> Visitor search queries pass directly from the browser to your WHMCS install \u2014 they do not touch the WordPress server, are not logged, and are not transmitted to any third party.<\/li>\n<li><strong>No external services.<\/strong> All assets (CSS, fonts, icons) are served from your own site. No CDN or remote dependency.<\/li>\n<li><strong>Stored data.<\/strong> Only configuration is stored \u2014 WHMCS URL, placeholder text, custom shortcode definitions \u2014 in the WordPress <code>wp_options<\/code> table. This is removed on plugin uninstall.<\/li>\n<\/ul>\n\n<p>You should still ensure your WHMCS install has its own privacy policy in place, since the visitor will be entering personal data on that side of the integration.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin does not connect to any external service.<\/p>\n\n<p>The visitor's browser submits the search form directly to <strong>your own WHMCS installation<\/strong> \u2014 a first-party endpoint that you control. Nothing is sent to WordPress.org, third-party domain APIs, analytics services, or the plugin author.<\/p>\n\n<h3>Source Code<\/h3>\n\n<p>This plugin contains no minified or compiled assets. All PHP, CSS, and JavaScript shipped in the plugin is human-readable source.<\/p>\n\n<p>The plugin is hosted on WordPress.org. Issues and pull requests can be submitted via the support forum or by emailing <a href=\"mailto:shipon@zendforce.com\">&#x73;&#104;&#x69;&#112;&#x6f;&#110;&#x40;z&#101;&#x6e;&#100;&#x66;&#111;&#x72;&#099;&#x65;&#046;&#x63;&#111;&#x6d;<\/a>.<\/p>\n\n<!--section=installation-->\n<h4>From the WordPress.org directory (recommended)<\/h4>\n\n<ol>\n<li>In your WordPress admin, go to <strong>Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Search for \"Domain Search for WHMCS\".<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<li>Configure under <strong>Settings \u2192 Domain Search for WHMCS<\/strong>.<\/li>\n<\/ol>\n\n<h4>Manual installation<\/h4>\n\n<ol>\n<li>Download the plugin ZIP from WordPress.org.<\/li>\n<li>Upload it via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>, or extract to <code>\/wp-content\/plugins\/domain-search-for-whmcs\/<\/code> via SFTP.<\/li>\n<li>Activate through the <strong>Plugins<\/strong> menu.<\/li>\n<li>Configure under <strong>Settings \u2192 Domain Search for WHMCS<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20change%20the%20whmcs%20url%3F\"><h3>How do I change the WHMCS URL?<\/h3><\/dt>\n<dd><p>Open <strong>Settings \u2192 Domain Search for WHMCS<\/strong> and update the <em>WHMCS URL<\/em> on the <strong>Default Settings<\/strong> tab. Use the base URL of your WHMCS install (e.g. <code>https:\/\/billing.example.com<\/code>) \u2014 no trailing slash, no <code>cart.php<\/code>.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20placeholder%20text%3F\"><h3>Can I customize the placeholder text?<\/h3><\/dt>\n<dd><p>Yes. Each shortcode has its own placeholder field. You can also change it programmatically with the <code>dsfwhmcs_placeholder<\/code> filter.<\/p><\/dd>\n<dt id=\"can%20i%20have%20different%20search%20forms%20for%20different%20brands%3F\"><h3>Can I have different search forms for different brands?<\/h3><\/dt>\n<dd><p>Yes \u2014 that is what the <strong>Custom Shortcodes<\/strong> tab is for. Each custom shortcode has its own WHMCS URL and placeholder. Reference it as <code>[domain_search_for_whmcs id=\"sc_xxxxx\"]<\/code>. Click any shortcode in the table to copy.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20store%20any%20user%20data%3F\"><h3>Does this plugin store any user data?<\/h3><\/dt>\n<dd><p>No. The plugin saves only your configuration (WHMCS URLs, placeholders, custom shortcode definitions) in <code>wp_options<\/code>. The search form submits the visitor's query directly to your WHMCS site \u2014 nothing is logged or transmitted by this plugin.<\/p><\/dd>\n<dt id=\"will%20it%20work%20with%20my%20theme%20or%20page%20builder%3F\"><h3>Will it work with my theme or page builder?<\/h3><\/dt>\n<dd><p>Yes. The output is small, semantic HTML. Tested with classic themes, block themes (FSE), Elementor, Beaver Builder, Bricks, Divi, Oxygen, and Breakdance. If your builder has a \"Shortcode\" element, drop it in there.<\/p><\/dd>\n<dt id=\"how%20do%20i%20style%20the%20form%3F\"><h3>How do I style the form?<\/h3><\/dt>\n<dd><p>Open the <strong>Customization<\/strong> tab inside the plugin to see the available CSS classes. Add overrides in <em>Appearance \u2192 Customize \u2192 Additional CSS<\/em>, your child theme's stylesheet, or a CSS plugin. The classes are stable and won't change between minor versions:<\/p>\n\n<ul>\n<li><code>.dsfwhmcs-wrapper<\/code> \u2014 outer container<\/li>\n<li><code>.dsfwhmcs-form<\/code> \u2014 <code>&lt;form&gt;<\/code> element<\/li>\n<li><code>.dsfwhmcs-search-input-group<\/code> \u2014 input group container<\/li>\n<li><code>.dsfwhmcs-input-with-button<\/code> \u2014 flexbox wrapper for input + button<\/li>\n<li><code>.dsfwhmcs-domain-search-input<\/code> \u2014 the <code>&lt;input&gt;<\/code> field<\/li>\n<li><code>.dsfwhmcs-domain-search-button<\/code> \u2014 the submit button<\/li>\n<\/ul><\/dd>\n<dt id=\"how%20do%20i%20get%20support%3F\"><h3>How do I get support?<\/h3><\/dt>\n<dd><p>The <strong>Community Forum<\/strong> on WordPress.org is the primary support channel \u2014 please open a thread there for the fastest public response. You can also reach the developer directly at <a href=\"mailto:shipon@zendforce.com\">&#x73;&#104;&#x69;&#112;&#x6f;&#110;&#x40;z&#101;&#x6e;&#100;&#x66;&#111;&#x72;&#099;&#x65;&#046;&#x63;&#111;&#x6d;<\/a> for personal assistance. Inside the plugin, the <strong>Support<\/strong> tab has both links plus a system info card that's handy to copy-paste into a bug report.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20whmcs%20rest%2Fdomain%20lookup%20api%3F\"><h3>Does it work with the WHMCS REST\/Domain Lookup API?<\/h3><\/dt>\n<dd><p>Not at the moment \u2014 the plugin hands off to WHMCS's own <code>cart.php<\/code> flow. This keeps the integration simple, fast, and dependency-free, with no need to expose WHMCS API credentials to WordPress. An optional inline-availability mode (off by default) is on the roadmap.<\/p><\/dd>\n<dt id=\"will%20my%20old%20shortcodes%20still%20work%20after%20upgrading%3F\"><h3>Will my old shortcodes still work after upgrading?<\/h3><\/dt>\n<dd><p>Yes. All existing default settings and custom shortcode IDs are preserved across upgrades. No data migration is required.<\/p><\/dd>\n<dt id=\"why%20am%20i%20seeing%20other%20plugins%27%20admin%20notices%20on%20the%20settings%20page%3F\"><h3>Why am I seeing other plugins' admin notices on the settings page?<\/h3><\/dt>\n<dd><p>Standard WordPress behavior \u2014 third-party plugins (SMTP plugins, security plugins, etc.) hook into the global <code>admin_notices<\/code> action which fires on every admin screen. Domain Search for WHMCS does not display those notices itself.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20require%20php%208%3F\"><h3>Does the plugin require PHP 8?<\/h3><\/dt>\n<dd><p>Yes. Version 3.0.0+ requires PHP 8.0 or higher. PHP 7.x has been end-of-life since November 2022 and is no longer receiving security fixes \u2014 please update your hosting environment.<\/p><\/dd>\n<dt id=\"how%20do%20i%20uninstall%20and%20remove%20all%20data%3F\"><h3>How do I uninstall and remove all data?<\/h3><\/dt>\n<dd><p>Deactivate, then <strong>Delete<\/strong> the plugin from the Plugins screen. The bundled <code>uninstall.php<\/code> removes all plugin options from the database.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20gdpr-compliant%3F\"><h3>Is the plugin GDPR-compliant?<\/h3><\/dt>\n<dd><p>Yes. The plugin does not collect, process, or transmit visitor data. The search form submits the query directly from the visitor's browser to your own WHMCS install (a first-party data flow already covered by your existing privacy policy). The plugin sets no cookies, loads no remote assets, and logs nothing.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20compatible%20with%20wordpress%20multisite%3F\"><h3>Is the plugin compatible with WordPress Multisite?<\/h3><\/dt>\n<dd><p>Yes. Activate per-site or network-activate. Settings are stored per-site, so each site in the network has its own WHMCS URL and shortcodes.<\/p><\/dd>\n<dt id=\"can%20i%20contribute%20or%20submit%20a%20feature%20request%3F\"><h3>Can I contribute or submit a feature request?<\/h3><\/dt>\n<dd><p>Yes \u2014 open a thread on the WordPress.org plugin support forum, or email <a href=\"mailto:shipon@zendforce.com\">&#x73;&#104;&#x69;&#112;&#x6f;&#110;&#x40;z&#101;&#x6e;&#100;&#x66;&#111;&#x72;&#099;&#x65;&#046;&#x63;&#111;&#x6d;<\/a>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.1.0<\/h4>\n\n<p><strong>Feature release: Appearance customizer with live preview.<\/strong><\/p>\n\n<ul>\n<li><strong>New:<\/strong> dedicated <strong>Appearance tab<\/strong> in the admin dashboard \u2014 fully customize the front-end search form: input background, text color, border, focus border, placeholder color, button background, hover background, icon color, plus separate corner-radius sliders for input and button (0\u201350px each). Changes apply through CSS custom properties with zero front-end JavaScript.<\/li>\n<li><strong>New:<\/strong> <strong>Live Preview<\/strong> card at the top of the Appearance tab \u2014 see your color and radius choices applied instantly as you tweak them.<\/li>\n<li><strong>New:<\/strong> synced color picker + hex text input for every color setting (use whichever you prefer; both stay in sync).<\/li>\n<li><strong>New:<\/strong> <strong>Reset to defaults<\/strong> button restores the entire Appearance section in one click (with confirmation).<\/li>\n<li><strong>New:<\/strong> Appearance settings are organized via clean <strong>sub-tabs<\/strong> (Search Input \/ Search Button) inside the Color &amp; Style card, keeping the form short and scannable.<\/li>\n<li><strong>New:<\/strong> active main tab and sub-tab are now persisted across page reloads (<code>localStorage<\/code>), so saving from the Button sub-tab returns you to the Button sub-tab.<\/li>\n<li><strong>Improved:<\/strong> front-end CSS now uses CSS custom properties (<code>--dsfw-input-bg<\/code>, <code>--dsfw-button-bg<\/code>, etc.), so theme developers can also override appearance from a stylesheet without touching the plugin's settings.<\/li>\n<li><strong>Improved:<\/strong> \"Settings saved\" notice now appears after saving via the Default Settings or Appearance forms (Settings API redirect was previously silent).<\/li>\n<li><strong>Improved:<\/strong> responsive admin layout \u2014 tab strip wraps to a second row on narrow screens instead of clipping; mobile-friendly header, tighter card padding on small viewports, single-column support grid, stacked footer.<\/li>\n<li><strong>Improved:<\/strong> input font-size raised to 16px on mobile to prevent iOS zoom-on-focus.<\/li>\n<li><strong>Improved:<\/strong> shortcodes table scrolls horizontally on narrow screens instead of overflowing.<\/li>\n<li><strong>i18n:<\/strong> regenerated the empty <code>.pot<\/code> template with all 112 unique strings \u2014 translators can now contribute via Poedit, Loco Translate, or the WordPress.org translation platform.<\/li>\n<li><strong>Internal:<\/strong> moved inline admin JavaScript to <code>assets\/admin.js<\/code>, properly enqueued via <code>wp_enqueue_script<\/code> with <code>wp_localize_script<\/code> for translatable strings. Cleaner code and CSP-friendly (no inline <code>&lt;script&gt;<\/code> blocks).<\/li>\n<li><strong>Polish:<\/strong> tighter one-line plugin header description matching the readme; removed the email link from the dashboard footer (still available in the Resources sidebar and Support tab).<\/li>\n<\/ul>\n\n<h4>3.0.0<\/h4>\n\n<p><strong>Major release: redesigned admin, brand refresh, security hardening, developer extensibility.<\/strong><\/p>\n\n<ul>\n<li><strong>New:<\/strong> ZendForce-branded admin dashboard \u2014 modular cards, tabbed navigation, click-to-copy shortcodes, and an \"At a Glance\" overview (custom shortcode count, active host, connection protocol).<\/li>\n<li><strong>New:<\/strong> built-in <strong>Support<\/strong> tab with WordPress.org forum link, direct email contact (shipon@zendforce.com), system info card, and a \"before you contact\" checklist.<\/li>\n<li><strong>New:<\/strong> five developer filter hooks \u2014 <code>dsfwhmcs_whmcs_url<\/code>, <code>dsfwhmcs_placeholder<\/code>, <code>dsfwhmcs_form_action<\/code>, <code>dsfwhmcs_form_method<\/code>, <code>dsfwhmcs_shortcode_html<\/code>.<\/li>\n<li><strong>New:<\/strong> logo mark, status pill, and a polished plugin footer with quick links.<\/li>\n<li><strong>New:<\/strong> translation-ready strings across the entire admin UI.<\/li>\n<li><strong>Changed:<\/strong> minimum PHP version raised to <strong>PHP 8.0<\/strong> (PHP 7.x has been EOL since November 2022).<\/li>\n<li><strong>Changed:<\/strong> \"Tested up to\" raised to WordPress 6.7.5.<\/li>\n<li><strong>Fixed:<\/strong> <code>uninstall.php<\/code> was deleting stale option keys and left actual plugin data behind. It now correctly removes all plugin options on uninstall.<\/li>\n<li><strong>Fixed:<\/strong> removed a non-functional WordPress nonce from the front-end search form. Because the form posts to an external WHMCS URL, the nonce could never validate \u2014 it was just a leakable token on every page.<\/li>\n<li><strong>Changed:<\/strong> the search form now submits via <code>GET<\/code> (matching WHMCS <code>cart.php<\/code> convention) and opens in a new tab with <code>rel=\"noopener\"<\/code>.<\/li>\n<li><strong>Hardened:<\/strong> explicit <code>current_user_can('manage_options')<\/code> checks on the settings handler and rendering function. Safer sanitization on <code>$_GET<\/code> parameters and shortcode IDs (<code>sanitize_key<\/code>).<\/li>\n<li><strong>Improved:<\/strong> admin assets only load on the plugin's settings page; asset versions tied to the plugin version for clean cache busting.<\/li>\n<li><strong>Improved:<\/strong> plugin headers now declare <code>Requires at least<\/code>, <code>Tested up to<\/code>, and <code>Requires PHP<\/code> so WordPress can warn users on incompatible installs.<\/li>\n<li><strong>Removed:<\/strong> stray <code>https:\/<\/code> directory accidentally bundled in earlier releases.<\/li>\n<li><strong>Internal:<\/strong> introduced <code>DSFWHMCS_VERSION<\/code>, <code>DSFWHMCS_FILE<\/code>, <code>DSFWHMCS_DIR<\/code>, and <code>DSFWHMCS_URL<\/code> constants for cleaner internals.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Redesigned admin dashboard with a modern, card-based UI and tabbed navigation.<\/li>\n<li>Fixed: <code>uninstall.php<\/code> removes the correct option keys.<\/li>\n<li>Fixed: removed the unused nonce from the front-end search form.<\/li>\n<li>Changed: search form submits via <code>GET<\/code> and opens in a new tab.<\/li>\n<li>Hardened: explicit capability checks; safer sanitization of <code>$_GET['message']<\/code>.<\/li>\n<li>Improved: admin assets only load on the plugin's settings page.<\/li>\n<li>Removed: stray <code>https:\/<\/code> directory bundled in prior releases.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Added admin settings for WHMCS URL and placeholder text.<\/li>\n<li>Improved security with nonce verification.<\/li>\n<li>Enhanced shortcode management functionality.<\/li>\n<li>Optimized code for better performance and compatibility.<\/li>\n<li>Added the ability to create and delete multiple shortcodes.<\/li>\n<li>Improved admin panel UI for better user experience.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Improved shortcode functionality.<\/li>\n<li>Added basic security improvements.<\/li>\n<li>Fixed minor styling issues.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"The fastest way to add a WHMCS domain search form to WordPress. Multi-shortcode, zero JavaScript, full admin dashboard.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/223032","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=223032"}],"author":[{"embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/shiponkarmakar"}],"wp:attachment":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=223032"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=223032"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=223032"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=223032"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=223032"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=223032"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}