handleFormSubmission(); } private function handleFormSubmission(): void { if ( ! isset( $_SERVER['REQUEST_METHOD'] ) || 'POST' !== $_SERVER['REQUEST_METHOD'] ) { return; } // phpcs:disable WordPress.Security.NonceVerification.Missing -- Nonce is verified in each handler method. if ( isset( $_POST['adsense_injector'] ) ) { $this->handleSaveForm(); } elseif ( isset( $_POST['delete_adsense_approval'] ) ) { $this->handleResetApproval(); } elseif ( isset( $_POST['delete_ads_txt_and_reset_publishers'] ) ) { $this->handleDeleteAdsTxt(); } // phpcs:enable WordPress.Security.NonceVerification.Missing } private function handleSaveForm(): void { if ( ! check_admin_referer( 'contai_adsense_injector_save', 'contai_settings_nonce' ) ) { return; } if ( ! current_user_can( 'manage_options' ) ) { return; } $form_type = sanitize_text_field( wp_unslash( $_POST['form_type'] ?? '' ) ); if ( $form_type === 'publishers' ) { update_option( 'contai_adsense_publishers', sanitize_textarea_field( wp_unslash( $_POST['contai_adsense_publishers'] ?? '' ) ) ); contai_generate_adsense_ads(); add_settings_error( 'ads_manager', 'ads_manager_success', __( 'AdSense settings saved successfully.', '1platform-content-ai' ), 'success' ); } elseif ( $form_type === 'custom_head' ) { $allowed_tags = array_merge( wp_kses_allowed_html( 'post' ), array( 'meta' => array( 'name' => true, 'content' => true, 'charset' => true, 'http-equiv' => true, 'property' => true, ), 'link' => array( 'rel' => true, 'href' => true, 'type' => true, 'media' => true, ), 'style' => array( 'type' => true, 'media' => true, ), 'script' => array( 'src' => true, 'async' => true, 'defer' => true, 'type' => true, 'crossorigin' => true, ), ) ); $custom_head = isset( $_POST['contai_custom_head'] ) ? wp_kses( wp_unslash( $_POST['contai_custom_head'] ), $allowed_tags ) : ''; update_option( 'contai_custom_head', $custom_head ); add_settings_error( 'ads_manager', 'ads_manager_success', __( 'Custom header code saved successfully.', '1platform-content-ai' ), 'success' ); } } private function handleResetApproval(): void { if ( ! check_admin_referer( 'contai_adsense_injector_delete', 'contai_delete_nonce' ) ) { return; } if ( ! current_user_can( 'manage_options' ) ) { return; } delete_option( 'contai_adsense_approved' ); add_settings_error( 'ads_manager', 'ads_manager_success', __( 'AdSense approval status has been reset.', '1platform-content-ai' ), 'success' ); } private function handleDeleteAdsTxt(): void { if ( ! check_admin_referer( 'contai_adsense_delete_ads_txt', 'contai_ads_txt_nonce' ) ) { return; } if ( ! current_user_can( 'manage_options' ) ) { return; } $ads_txt_path = ABSPATH . 'ads.txt'; $deleted = false; if ( file_exists( $ads_txt_path ) ) { global $wp_filesystem; if ( empty( $wp_filesystem ) ) { require_once ABSPATH . 'wp-admin/includes/file.php'; WP_Filesystem(); } $deleted = $wp_filesystem->delete( $ads_txt_path ); } else { $deleted = true; } update_option( 'contai_adsense_publishers', '' ); if ( $deleted ) { add_settings_error( 'ads_manager', 'ads_manager_success', __( 'ads.txt deleted and publisher list reset.', '1platform-content-ai' ), 'success' ); } else { add_settings_error( 'ads_manager', 'ads_manager_error', __( 'Failed to delete ads.txt. Check file permissions.', '1platform-content-ai' ), 'error' ); } } public function render(): void { settings_errors( 'ads_manager' ); ?>
renderAdSenseAccountTab(); ?> renderPublishersTab(); ?> renderCustomHeaderTab(); ?> renderAdvancedTab(); ?>
0 ) : ?>

tag on every page of your site.', '1platform-content-ai' ); ?>

1

2

3

—