is_type( ‘variable’ ) ) return;
?>
sanitize_text_field($_POST[‘custom_rx_type’]),
);
if ($_POST[‘custom_rx_type’] !== ‘plano’) {
$fields = [‘od_sph’, ‘od_cyl’, ‘od_axis’, ‘od_add’, ‘os_sph’, ‘os_cyl’, ‘os_axis’, ‘os_add’, ‘pd_single’, ‘pd_right’, ‘pd_left’];
foreach ($fields as $field) {
if (isset($_POST[‘custom_rx_’ . $field])) {
$cart_item_data[‘rx_data’][$field] = sanitize_text_field($_POST[‘custom_rx_’ . $field]);
}
}
}
$cart_item_data[‘unique_key’] = md5(microtime().rand());
}
return $cart_item_data;
}
// 3. DISPLAY: Cart & Checkout
add_filter(‘woocommerce_get_item_data’, ‘display_rx_in_cart’, 10, 2);
function display_rx_in_cart($item_data, $cart_item) {
if (isset($cart_item[‘rx_data’])) {
$rx = $cart_item[‘rx_data’];
$item_data[] = array(‘key’ => ‘Lens Type’, ‘value’ => ucfirst(str_replace(‘_’, ‘ ‘, $rx[‘Type’])));
if ($rx[‘Type’] !== ‘plano’) {
if(!empty($rx[‘od_sph’])) {
$item_data[] = array(‘key’ => ‘Right (OD)’, ‘value’ => “{$rx[‘od_sph’]} / {$rx[‘od_cyl’]} x {$rx[‘od_axis’]}” . (!empty($rx[‘od_add’]) ? ” Add: {$rx[‘od_add’]}” : “”));
}
if(!empty($rx[‘os_sph’])) {
$item_data[] = array(‘key’ => ‘Left (OS)’, ‘value’ => “{$rx[‘os_sph’]} / {$rx[‘os_cyl’]} x {$rx[‘os_axis’]}” . (!empty($rx[‘os_add’]) ? ” Add: {$rx[‘os_add’]}” : “”));
}
$item_data[] = array(‘key’ => ‘PD’, ‘value’ => isset($rx[‘pd_single’]) ? $rx[‘pd_single’] : “R: {$rx[‘pd_right’]} / L: {$rx[‘pd_left’]}”);
}
}
return $item_data;
}
// 4. ADMIN SETTINGS (Placeholder for Future AI Keys)
add_action(‘admin_menu’, ‘eyewear_ai_admin_menu’);
function eyewear_ai_admin_menu() {
add_submenu_page(
‘woocommerce’,
‘Eyewear AI Settings’,
‘Eyewear AI’,
‘manage_options’,
‘eyewear-ai-settings’,
‘eyewear_ai_settings_page’
);
}
function eyewear_ai_settings_page() {
?>
Eyewear AI Settings
Configure your Virtual Try-On Engine API keys here.