' . esc_html__( 'Configure how the plugin tracks and notifies you about form submissions.', 'forge-trueconversion' ) . '

'; }, 'ftcon-settings' ); // Notification email. register_setting( 'ftcon_settings', 'ftcon_notification_email', array( 'type' => 'string', 'sanitize_callback' => 'sanitize_email', 'default' => get_option( 'admin_email' ), ) ); add_settings_field( 'ftcon_notification_email', __( 'Notification Email', 'forge-trueconversion' ), array( __CLASS__, 'field_notification_email' ), 'ftcon-settings', 'ftcon_general' ); // Email frequency. register_setting( 'ftcon_settings', 'ftcon_email_frequency', array( 'type' => 'array', 'sanitize_callback' => array( __CLASS__, 'sanitize_email_frequency' ), 'default' => array( 'each' ), ) ); add_settings_field( 'ftcon_email_frequency', __( 'Email Notifications', 'forge-trueconversion' ), array( __CLASS__, 'field_email_frequency' ), 'ftcon-settings', 'ftcon_general' ); // ── Form Plugins Section ──────────────────────────────────── add_settings_section( 'ftcon_forms', __( 'Form Plugin Integrations', 'forge-trueconversion' ), function () { echo '

' . esc_html__( 'Select which form plugins to track. Only plugins detected on your site are shown as active.', 'forge-trueconversion' ) . '

'; }, 'ftcon-settings' ); register_setting( 'ftcon_settings', 'ftcon_enabled_forms', array( 'type' => 'array', 'sanitize_callback' => array( __CLASS__, 'sanitize_enabled_forms' ), 'default' => array(), ) ); add_settings_field( 'ftcon_enabled_forms', __( 'Enabled Form Plugins', 'forge-trueconversion' ), array( __CLASS__, 'field_enabled_forms' ), 'ftcon-settings', 'ftcon_forms' ); // ── Google Ads Section (All Plans) ────────────────────────── add_settings_section( 'ftcon_google_ads', __( 'Google Ads Integration', 'forge-trueconversion' ), array( __CLASS__, 'section_google_ads' ), 'ftcon-settings' ); register_setting( 'ftcon_settings', 'ftcon_gads_customer_id', array( 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field', 'default' => '', ) ); add_settings_field( 'ftcon_gads_status', __( 'Connection Status', 'forge-trueconversion' ), array( __CLASS__, 'field_gads_status' ), 'ftcon-settings', 'ftcon_google_ads' ); // ── Advanced Section ────────────────────────────────────────── add_settings_section( 'ftcon_advanced', __( 'Advanced', 'forge-trueconversion' ), function () { echo '

' . esc_html__( 'These settings are fine at their defaults for most sites. Only change them if you have a specific reason.', 'forge-trueconversion' ) . '

'; }, 'ftcon-settings' ); // Conversion window (cookie TTL). register_setting( 'ftcon_settings', 'ftcon_conversion_window', array( 'type' => 'string', 'sanitize_callback' => array( __CLASS__, 'sanitize_conversion_window' ), 'default' => 'session', ) ); add_settings_field( 'ftcon_conversion_window', __( 'Conversion Window', 'forge-trueconversion' ), array( __CLASS__, 'field_conversion_window' ), 'ftcon-settings', 'ftcon_advanced' ); // ── Data Section ──────────────────────────────────────────── add_settings_section( 'ftcon_data', __( 'Data Management', 'forge-trueconversion' ), function () { echo '

' . esc_html__( 'Control what happens when you deactivate the plugin.', 'forge-trueconversion' ) . '

'; }, 'ftcon-settings' ); register_setting( 'ftcon_settings', 'ftcon_cleanup_on_deactivate', array( 'type' => 'boolean', 'sanitize_callback' => 'rest_sanitize_boolean', 'default' => false, ) ); add_settings_field( 'ftcon_cleanup_on_deactivate', __( 'Delete Data on Deactivation', 'forge-trueconversion' ), array( __CLASS__, 'field_cleanup' ), 'ftcon-settings', 'ftcon_data' ); } /** * ── Section Descriptions ──────────────────────────────────────── */ /** * Google Ads Section Description */ public static function section_google_ads() { echo '

' . esc_html__( 'Connect Google Ads to send qualified conversions back to Google for better ad optimisation.', 'forge-trueconversion' ); echo ' ' . esc_html__( 'Go to detailed setup guide →', 'forge-trueconversion' ) . '

'; } /** * ── Field Renderers ───────────────────────────────────────────── */ /** * Notification Email Field */ public static function field_notification_email() { $value = get_option( 'ftcon_notification_email', get_option( 'admin_email' ) ); ?>



' . esc_html__( 'Only installed and active form plugins can be enabled.', 'forge-trueconversion' ) . '

'; } /** * Email Notification Frequency Field */ public static function field_email_frequency() { $value = get_option( 'ftcon_email_frequency', array( 'each' ) ); $options = self::get_email_frequency_options(); foreach ( $options as $key => $label ) { $checked = is_array( $value ) && in_array( $key, $value, true ); ?> ● ' . esc_html__( 'Connected', 'forge-trueconversion' ) . ''; if ( $customer_id ) { echo ' — ' . esc_html( $customer_id ); } echo '

'; echo '' . esc_html__( 'Manage Google Ads Settings', 'forge-trueconversion' ) . ''; } else { echo '● ' . esc_html__( 'Not Connected', 'forge-trueconversion' ) . ''; echo '

'; echo '' . esc_html__( 'Connect Google Ads', 'forge-trueconversion' ) . ''; } } /** * Cleanup on Deactivation Field */ public static function field_cleanup() { $value = get_option( 'ftcon_cleanup_on_deactivate', false ); ?>

human-readable label. */ public static function get_email_frequency_options() { $options = array( 'each' => __( 'Email me for each form submission', 'forge-trueconversion' ), 'monthly' => __( 'Monthly summary', 'forge-trueconversion' ), ); /** * Filter the available email notification frequency options. * * @param array $options Frequency key => human-readable label. */ return apply_filters( 'ftcon_email_frequency_options', $options ); } /** * Sanitize Enabled Forms * * @param array $value The submitted array. * @return array Sanitized array. */ public static function sanitize_enabled_forms( $value ) { if ( ! is_array( $value ) ) { return array(); } return array_map( 'sanitize_text_field', $value ); } /** * Render the Settings Page */ public static function render_page() { if ( ! current_user_can( 'manage_options' ) ) { wp_die( esc_html__( 'You do not have permission to access this page.', 'forge-trueconversion' ) ); } ?>