prefix . 'cfep_block_fields'; // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQL.InterpolatedNotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter if ($wpdb->get_var("SHOW TABLES LIKE '$table'") != $table) { return array(); } $cache_key = 'cfep_disabled_default_fields'; $results = wp_cache_get($cache_key, 'cfep'); if ($results === false) { // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQL.InterpolatedNotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter $results = $wpdb->get_results( "SELECT field_key FROM $table WHERE is_default = 1 AND enabled = 0", ARRAY_A ); wp_cache_set($cache_key, $results, 'cfep', 300); } $disabled = array(); foreach ($results as $row) { $disabled[] = $row['field_key']; } return $disabled; } /** * Add CSS to hide disabled fields */ public function hide_disabled_fields_css() { if (!is_checkout()) { return; } $disabled_fields = $this->get_disabled_default_fields(); if (empty($disabled_fields)) { return; } // Generate CSS selectors for Block Checkout $selectors = array(); foreach ($disabled_fields as $field_key) { // Map field_key to actual CSS class $base_key = str_replace(array('billing_', 'shipping_'), '', $field_key); // Hide the field wrapper $selectors[] = '.wc-block-components-address-form__' . $base_key; // Special case: address_2 has a toggle button that must also be hidden if ($base_key === 'address_2') { $selectors[] = '.wc-block-components-address-form__address_2-toggle'; } } if (empty($selectors)) { return; } $css = implode(',', $selectors) . ' { display: none !important; }'; wp_register_style( 'cfep-hidden-fields', false, array(), CFEP_VERSION ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion wp_enqueue_style( 'cfep-hidden-fields' ); wp_add_inline_style( 'cfep-hidden-fields', $css ); } /** * Modify default address fields */ public function modify_address_fields($fields) { $disabled_fields = $this->get_disabled_default_fields(); foreach ($disabled_fields as $field_key) { // Remove prefix to get base field name $base_key = str_replace(array('billing_', 'shipping_'), '', $field_key); if (isset($fields[$base_key])) { // Don't remove, just mark as not required and hidden $fields[$base_key]['required'] = false; $fields[$base_key]['class'][] = 'cfep-hidden-field'; } } return $fields; } /** * Modify billing fields */ public function modify_billing_fields($fields) { $disabled_fields = $this->get_disabled_default_fields(); foreach ($disabled_fields as $field_key) { if (strpos($field_key, 'billing_') === 0 && isset($fields[$field_key])) { $fields[$field_key]['required'] = false; $fields[$field_key]['class'][] = 'cfep-hidden-field'; } } return $fields; } /** * Modify shipping fields */ public function modify_shipping_fields($fields) { $disabled_fields = $this->get_disabled_default_fields(); foreach ($disabled_fields as $field_key) { if (strpos($field_key, 'shipping_') === 0 && isset($fields[$field_key])) { $fields[$field_key]['required'] = false; $fields[$field_key]['class'][] = 'cfep-hidden-field'; } } return $fields; } }