Overview
The Hosting Solution plugin is a comprehensive web hosting management solution for WordPress, built on top of WooCommerce. It provides a complete system for selling, managing, and supporting hosting plans and domain registrations through WordPress with built-in subscription management.
Features
Hosting Management
- Create and manage hosting accounts with WHM/cPanel integration
- Automatic provisioning of hosting accounts upon subscription purchase
- Suspension/reactivation of hosting accounts based on subscription status
- Support for multiple hosting plans and servers
- Custom hosting plans via WHM package integration
Domain Management
- Domain registration via eNom integration
- Domain DNS management interface for clients
- Automatic domain renewal handling
- Support for domain transfers
- Custom nameserver configuration
Subscription Management
- Recurring billing for hosting services and domains
- Flexible billing cycles (monthly, quarterly, yearly, etc.)
- Automatic renewals and payments
- Proration for upgrades and downgrades
- Multiple payment methods support
- Automatic subscription cancellation on payment failure
- Subscription suspension and resumption capabilities
- Renewal notifications and reminders
WooCommerce Integration
- Specialized product types for hosting and domains
- Subscription-based billing for hosting and domains
- Automatic handling of renewals and payment failures
- Different pricing for domain registration vs renewal
Client Management
- Custom my-account pages for hosting and domain management
- User-friendly interface for managing hosting settings
- DNS management tools for domains
- Support ticket system for customer service
- Collaborator system for sharing hosting/domain access
Administration
- Server management interface for administrators
- WHM/cPanel API integration for automated account management
- Comprehensive settings panel
- Test mode for development and testing
Installation Requirements
Prerequisites
- WordPress 5.0 or higher
- PHP 7.2 or higher
- WooCommerce 3.0 or higher
- cURL PHP extension
- WHM/cPanel access with API privileges
- eNom Reseller account (for domain registration)
Installation Steps
- Upload the
hosting-solution
folder to the/wp-content/plugins/
directory - Activate the plugin through the ‘Plugins’ menu in WordPress
- Ensure WooCommerce is installed and activated
- Configure the plugin settings under the Hosting Solution menu
Configuration
General Settings
- Navigate to Hosting Solution → Settings
- Configure general settings, including test mode options
- Customize button styling to match your theme
- Save your settings
Subscription Settings
- Go to Hosting Solution → Settings → Subscriptions
- Configure default billing cycles and renewal settings
- Set up email notifications for subscription events
- Configure automatic suspension timing for failed payments
- Save your settings
Server Configuration
- Go to Hosting Solution → Servers
- Add a new server with the following details:
- Server Name: A descriptive name for identification
- WHM User ID: Your WHM username (typically ‘root’)
- WHM Token: Your WHM API token
- WHM Host: The server hostname or IP address
- Save the server to automatically fetch WHM packages
eNom Integration
- Navigate to Hosting Solution → eNom Settings
- Enter your eNom API credentials:
- Username: Your eNom reseller username
- Password: Your eNom reseller password
- Mode: Select between Live or Test
- Configure default nameservers for domains
- Set your domain price markup if applicable
- Save your settings
Creating Products
Hosting Products
- Go to Products → Add New
- Set up a regular product with the following:
- Name and description for your hosting plan
- Price and subscription details (billing interval)
- Under Product Data, select “Simple subscription” or “Variable subscription”
- Scroll to the product type field and select “Hosting”
- Select the server from the dropdown
- Choose the hosting plan from available WHM packages
- Save the product
Domain Products
- Go to Products → Add New
- Set up a regular product with the following:
- Name should be the domain name (e.g., “example.com”)
- Price and subscription details (typically yearly billing)
- Under Product Data, select “Simple subscription”
- Scroll to the product type field and select “Domain”
- Optionally set domain-specific prices for registration and renewal
- Save the product
Subscription Management
Creating Subscriptions
- Subscriptions are created automatically when customers purchase hosting or domain products
- You can also manually create subscriptions:
- Go to Hosting Solution → Subscriptions → Add New
- Select the customer and products
- Set billing intervals and payment details
- Save to create the subscription
Managing Active Subscriptions
- Go to Hosting Solution → Subscriptions
- View all active and inactive subscriptions
- Click on a subscription to view details:
- Customer information
- Billing details
- Payment history
- Associated hosting/domains
- Status and renewal dates
Subscription Actions
Administrators can:
- Pause subscriptions (temporarily suspend billing)
- Cancel subscriptions (stop future renewals)
- Change billing dates or intervals
- Update payment methods
- Process manual renewals
- Apply credits or adjustments
Customer Subscription Management
Customers can manage their subscriptions through their accounts:
- View active subscriptions and renewal dates
- Update payment methods
- Change billing address
- Cancel or pause subscriptions (if enabled)
- View payment history
Domain Checker Shortcode
The plugin includes a domain checker shortcode that allows customers to check domain availability directly from your website.
Adding the Domain Checker to Pages
- Create a new page or edit an existing one
- Add the shortcode
[domain_checker]
where you want the domain search form to appear - Save the page
Domain Checker Features
- Clean, user-friendly search interface
- Real-time domain availability checking
- Shows registration and renewal pricing
- Provides domain suggestions with alternative TLDs
- “Add to Cart” functionality for available domains
Customization
The domain checker includes CSS that works with most themes. You can further customize the appearance by adding custom CSS to your theme.
Support Ticket System
The plugin includes a comprehensive ticket system for customer support.
Setting Up the Ticket System
The ticket system is automatically enabled when you activate the plugin. It creates:
- A “ticket” custom post type
- A “ticket_status” taxonomy with default statuses (Open, Closed, In Progress)
- A support tickets tab in the My Account area
Customer Ticket Features
Customers can:
- Create new support tickets from their account
- Attach files to tickets for additional context
- Reply to existing tickets
- View ticket status and history
- Close their own tickets when issues are resolved
Administrator Ticket Management
Administrators can:
- View all customer tickets from the WordPress admin
- Respond to tickets with public or private notes
- Change ticket status (Open, In Progress, Closed)
- Assign tickets to specific support staff
- View customer information alongside tickets
DNS Management
The plugin provides a powerful DNS management interface for domains.
DNS Editor Features
- View and edit domain nameservers
- Manage common DNS record types (A, AAAA, CNAME, MX, TXT, SRV, CAA)
- Add, edit, and delete DNS records
- Real-time updates via eNom API
Accessing DNS Editor
- Customers navigate to My Account → Domains
- Click on “Manage DNS” for a specific domain
- Use the interface to manage nameservers and DNS records
Technical Details
- Changes are made in real-time to the domain’s DNS records
- Error handling and validation for proper DNS record formats
- Updates are processed through the eNom API
Nameserver Configuration
The plugin provides comprehensive nameserver management for domains registered through eNom.
Default Nameservers
- Navigate to Hosting Solution → eNom Settings
- Configure up to four default nameservers in the Default Nameservers section
- These nameservers can be used as templates for domain registrations
Nameserver Assignment
- During domain purchase, nameservers are automatically configured
- Default configuration uses ns1.siteskyline.com through ns4.siteskyline.com
- Nameservers can be modified post-purchase through the DNS Editor
Managing Nameservers
Customers can:
- View current nameservers through the DNS Management interface
- Update nameservers by clicking “Edit Nameservers” button
- Enter custom nameservers for specialized DNS hosting
- Save changes to instantly update the domain’s nameserver configuration
Administrator Nameserver Management
Administrators can:
- Configure default nameservers through eNom Settings
- Override nameservers during domain registration
- Update nameservers for customer domains when needed
- Assist customers with nameserver configuration issues
Technical Implementation
- Nameserver updates use the eNom API via the modifyns command
- Changes take effect at the registry level within 24-48 hours
- Proper validation ensures only valid nameserver formats are accepted
Collaborator System
The plugin includes a collaborator system that allows users to share access to their hosting and domain resources.
How Collaboration Works
- Users can invite others by email through the Collaborator tab
- Invitees receive access to view the inviter’s hosting accounts and domains
- Shared access is view-only by default (cannot make changes)
- Users can manage who they’ve invited and remove access at any time
Setting Up Collaboration
- Navigate to My Account → Collaborator
- Enter the email address of the person to invite
- Click “Invite” to send the invitation
- The invited user will have access once they log in
Collaboration Benefits
- Allows team collaboration on website projects
- Enables agency/client relationships with appropriate access levels
- Simplifies management of multiple hosting accounts across users
Managing Subscriptions
Subscription Status Effects
- Active: Hosting/domain is active and accessible
- On-Hold: Hosting account is suspended but not deleted
- Cancelled: Hosting account is suspended
- Expired: Hosting account is suspended
- Pending: Awaiting initial payment
- Pending-Cancel: Still active until the end of the billing period
Manual Subscription Assignment
To manually assign a subscription to an existing hosting or domain post:
- Edit the hosting/domain post
- Find the “Subscription ID” field
- Enter the Subscription ID
- Save the post
Customer Experience
My Account Pages
Customers can access their hosting and domains through the My Account area:
- Hosting tab: Lists all available hosting accounts
- Domains tab: Shows all registered domains
- Subscriptions tab: Manage recurring payments and billing
- Tickets tab: Access to support ticket system
- Collaborator tab: Manage shared access with other users
Hosting Management
Customers can:
- View hosting details
- Access cPanel
- Change domain pointed to hosting
- View usage statistics
- Manage account password
Domain Management
Customers can:
- Manage DNS records
- Change nameservers
- View domain status
- See renewal dates
Subscription Management
Customers can:
- View active subscriptions and renewal dates
- Update payment method for automatic renewals
- View billing history and upcoming payments
- Cancel automatic renewals if desired
- Reactivate cancelled subscriptions (within grace period)
Troubleshooting
Common Issues
Subscription Issues
- Failed Renewals: Check payment method validity and customer balance
- Subscription Status Not Updating: Clear cache and check webhook deliverability
- Automatic Renewals Not Processing: Verify cron jobs are running properly
- Subscription Emails Not Sending: Check email settings and spam filters
- Subscription Pricing Inconsistencies: Verify product setup and tax settings
Hosting Account Creation Failures
- Check WHM API credentials in server settings
- Verify WHM packages exist and match those selected in products
- Enable debug logging and check for specific error messages
- Verify server has enough resources for new accounts
Domain Registration Failures
- Verify eNom API credentials
- Check if domain is available for registration
- Ensure customer provided valid contact information
- Check eNom account balance for funds
Debug Mode
To enable debug mode:
- Go to Hosting Solution → Settings
- Enable “Test Mode”
- Check WordPress debug.log for detailed error messages
Subscription Troubleshooting
- Manual Renewal: Use the “Process Renewal” action to manually renew a subscription
- Force Status Update: Use the “Sync Status” option to refresh subscription status
- Repair Missing Data: The “Repair Subscription” tool can fix corrupted subscription data
- Verify Webhooks: Ensure payment gateway webhooks are properly configured
- Check Scheduled Actions: View pending and completed subscription-related scheduled actions
WHM API Errors
Common WHM API errors:
- Authentication failures: Check WHM username and token
- Package not found: Ensure WHM package names match exactly
- Account creation limits: Check server account limits
- Resource constraints: Verify server has sufficient resources
eNom API Errors
Common eNom API errors:
- Authentication failures: Check eNom credentials
- Insufficient funds: Add funds to your eNom account
- Domain unavailable: Domain may already be registered
- Invalid contact information: Ensure all required fields are provided
Advanced Usage
Adding a New Hosting Account Manually
- Create a new Hosting post (Hosting Solution → Add Hosting)
- Fill in required details:
- Title: Name for the hosting account
- Subscription ID: Associated subscription
- Hosting Domain: Primary domain for the account
- Hosting Plan: Selected hosting package
- Server: Server to create the account on
- Save the post to create the hosting account
Adding a Domain Manually
- Create a new Domain post (Hosting Solution → Add Domain)
- Fill in required details:
- Title: The domain name (e.g., example.com)
- Subscription ID: Associated subscription
- Save the post (note: this won’t register the domain automatically)
Creating a Subscription Manually
- Navigate to Hosting Solution → Subscriptions → Add New
- Select customer and products to include
- Set billing cycle, start date, and other parameters
- Save to generate the subscription
- Use the “Link” option to connect with existing hosting/domains
Manual Hosting Account Management
For direct WHM actions:
- Edit the hosting post
- Use the WHM Actions section to:
- Suspend account
- Unsuspend account
- Change package
- Reset password
- Delete account (use with caution)
License Management
The plugin includes license management for activation:
- Purchase a license from the official website
- Navigate to Hosting Solution → License
- Enter your license key
- Activate your license to receive automatic updates