'api_url', 'placeholder' => 'https://your-whmcs-domain.com', 'description' => __('Your WHMCS installation URL (without /includes/api.php)', 'whmcs-pricing') ) ); add_settings_field( 'api_identifier', __('API Identifier', 'whmcs-pricing'), array($this, 'render_text_field'), 'whmcs-pricing', 'whmcs_pricing_api_section', array( 'name' => 'api_identifier', 'description' => __('Your WHMCS API identifier', 'whmcs-pricing') ) ); add_settings_field( 'api_secret', __('API Secret', 'whmcs-pricing'), array($this, 'render_password_field'), 'whmcs-pricing', 'whmcs_pricing_api_section', array( 'name' => 'api_secret', 'description' => __('Your WHMCS API secret', 'whmcs-pricing') ) ); // Display Settings Section add_settings_section( 'whmcs_pricing_display_section', __('Display Settings', 'whmcs-pricing'), array($this, 'render_display_section'), 'whmcs-pricing' ); add_settings_field( 'default_currency', __('Default Currency', 'whmcs-pricing'), array($this, 'render_currency_field'), 'whmcs-pricing', 'whmcs_pricing_display_section', array( 'name' => 'default_currency', 'description' => __('Default currency for pricing display', 'whmcs-pricing') ) ); add_settings_field( 'show_decimals', __('Show Decimals', 'whmcs-pricing'), array($this, 'render_checkbox_field'), 'whmcs-pricing', 'whmcs_pricing_display_section', array( 'name' => 'show_decimals', 'label' => __('Display prices with decimal places (e.g., €67.00 instead of €67)', 'whmcs-pricing') ) ); add_settings_field( 'decimal_separator', __('Decimal Separator', 'whmcs-pricing'), array($this, 'render_select_field'), 'whmcs-pricing', 'whmcs_pricing_display_section', array( 'name' => 'decimal_separator', 'options' => array( '.' => __('Period (.) - Example: 1,234.56', 'whmcs-pricing'), ',' => __('Comma (,) - Example: 1.234,56', 'whmcs-pricing') ), 'description' => __('Choose the character to use as decimal separator', 'whmcs-pricing') ) ); add_settings_field( 'hide_currency_symbol', __('Hide Currency Symbol', 'whmcs-pricing'), array($this, 'render_checkbox_field'), 'whmcs-pricing', 'whmcs_pricing_display_section', array( 'name' => 'hide_currency_symbol', 'label' => __('Hide currency symbol/prefix from prices', 'whmcs-pricing') ) ); add_settings_field( 'hide_billing_cycle', __('Hide Billing Cycle', 'whmcs-pricing'), array($this, 'render_checkbox_field'), 'whmcs-pricing', 'whmcs_pricing_display_section', array( 'name' => 'hide_billing_cycle', 'label' => __('Hide billing cycle text (e.g., "per month") from prices', 'whmcs-pricing') ) ); // Performance Settings Section add_settings_section( 'whmcs_pricing_performance_section', __('Performance Settings', 'whmcs-pricing'), array($this, 'render_performance_section'), 'whmcs-pricing' ); add_settings_field( 'cache_duration', __('Cache Duration', 'whmcs-pricing'), array($this, 'render_number_field'), 'whmcs-pricing', 'whmcs_pricing_performance_section', array( 'name' => 'cache_duration', 'min' => 300, 'max' => 86400, 'step' => 300, 'description' => __('How long to cache API responses (in seconds). Default: 3600 (1 hour)', 'whmcs-pricing') ) ); // Advanced Settings Section add_settings_section( 'whmcs_pricing_advanced_section', __('Advanced Settings', 'whmcs-pricing'), array($this, 'render_advanced_section'), 'whmcs-pricing' ); add_settings_field( 'debug_mode', __('Debug Mode', 'whmcs-pricing'), array($this, 'render_checkbox_field'), 'whmcs-pricing', 'whmcs_pricing_advanced_section', array( 'name' => 'debug_mode', 'label' => __('Enable debug logging and disable cache', 'whmcs-pricing') ) ); } /** * Render settings page */ public function render_settings_page() { if (!current_user_can('manage_options')) { return; } // Show success message if (isset($_GET['settings-updated'])) { add_settings_error( 'whmcs_pricing_messages', 'whmcs_pricing_message', __('Settings saved successfully.', 'whmcs-pricing'), 'updated' ); } if (isset($_GET['cache-cleared'])) { add_settings_error( 'whmcs_pricing_messages', 'whmcs_pricing_message', __('Cache cleared successfully.', 'whmcs-pricing'), 'updated' ); } settings_errors('whmcs_pricing_messages'); ?>

[whmcs_price product_id="123"]

[whmcs_price product_id="123" billing_cycle="monthly"]

[whmcs_price product_id="123" currency="EUR"]

[whmcs_price product_id="123" format="no_decimals"]

[whmcs_price product_id="123" lang="dutch"]

  • monthly
  • quarterly
  • semiannually
  • annually
  • biennially
  • triennially

' . esc_html__('Configure your WHMCS API credentials. You can generate API credentials in WHMCS Admin > System Settings > API Credentials.', 'whmcs-pricing') . '

'; } public function render_display_section() { echo '

' . esc_html__('Configure how prices are displayed on your website.', 'whmcs-pricing') . '

'; } public function render_performance_section() { echo '

' . esc_html__('Optimize plugin performance with caching.', 'whmcs-pricing') . '

'; } public function render_advanced_section() { echo '

' . esc_html__('Advanced options for troubleshooting and development.', 'whmcs-pricing') . '

'; } /** * Field rendering methods */ public function render_text_field($args) { $settings = get_option('whmcs_pricing_settings', array()); $value = isset($settings[$args['name']]) ? $settings[$args['name']] : ''; $placeholder = isset($args['placeholder']) ? $args['placeholder'] : ''; ?>

'USD - US Dollar ($)', 'EUR' => 'EUR - Euro (€)', 'GBP' => 'GBP - British Pound (£)', 'AUD' => 'AUD - Australian Dollar (A$)', 'CAD' => 'CAD - Canadian Dollar (C$)', 'JPY' => 'JPY - Japanese Yen (¥)', 'CNY' => 'CNY - Chinese Yuan (¥)', 'INR' => 'INR - Indian Rupee (₹)', 'BRL' => 'BRL - Brazilian Real (R$)', 'RUB' => 'RUB - Russian Ruble (₽)', 'CHF' => 'CHF - Swiss Franc (Fr)', 'SEK' => 'SEK - Swedish Krona (kr)', 'NOK' => 'NOK - Norwegian Krone (kr)', 'DKK' => 'DKK - Danish Krone (kr)', 'PLN' => 'PLN - Polish Zloty (zł)', 'THB' => 'THB - Thai Baht (฿)', 'MYR' => 'MYR - Malaysian Ringgit (RM)', 'SGD' => 'SGD - Singapore Dollar (S$)', 'NZD' => 'NZD - New Zealand Dollar (NZ$)', 'MXN' => 'MXN - Mexican Peso (Mex$)', 'ZAR' => 'ZAR - South African Rand (R)', 'ARS' => 'ARS - Argentine Peso ($)' ); ?>

'whmcs-pricing', 'cache-cleared' => 'true' ), admin_url('options-general.php') )); exit; } /** * Enqueue admin styles */ public function enqueue_admin_styles($hook) { if ('settings_page_whmcs-pricing' !== $hook) { return; } wp_enqueue_style( 'whmcs-pricing-admin', WHMCS_PRICING_PLUGIN_URL . 'assets/css/admin.css', array(), WHMCS_PRICING_VERSION ); } }