// ------------------------ // Админка: подменю Cashback // ------------------------ add_action('admin_menu', function() { add_submenu_page( 'telegram-auth', // родительское меню плагина (slug вашей страницы настроек плагина) 'Cashback', 'Cashback', 'manage_options', 'telegram-auth-cashback', 'telegram_auth_render_cashback_admin_page' ); }); function telegram_auth_render_cashback_admin_page() { if (!current_user_can('manage_options')) { wp_die('Недостаточно прав'); } // Обработка сохранения даты старта if (!empty($_POST['telegram_cashback_start_date']) && check_admin_referer('telegram_cashback_save','telegram_cashback_nonce')) { update_option('telegram_cashback_start_date', sanitize_text_field($_POST['telegram_cashback_start_date'])); } // Обработка CRUD для UTM меток global $wpdb; $table = $wpdb->prefix . 'cashback_utm_tags'; if (!empty($_POST['utm_action']) && check_admin_referer('telegram_cashback_save','telegram_cashback_nonce')) { if ($_POST['utm_action'] === 'add') { $utm = sanitize_text_field($_POST['utm'] ?? ''); $amount = floatval($_POST['cashback_amount'] ?? 0); $active = !empty($_POST['is_active']) ? 1 : 0; if ($utm !== '') { $wpdb->insert($table, [ 'utm' => $utm, 'cashback_amount' => $amount, 'is_active' => $active ], ['%s','%f','%d']); } } elseif ($_POST['utm_action'] === 'toggle' && !empty($_POST['id'])) { $id = intval($_POST['id']); $row = $wpdb->get_row($wpdb->prepare("SELECT is_active FROM `$table` WHERE id=%d", $id)); if ($row) { $wpdb->update($table, ['is_active' => $row->is_active ? 0 : 1], ['id' => $id], ['%d'], ['%d']); } } elseif ($_POST['utm_action'] === 'delete' && !empty($_POST['id'])) { $id = intval($_POST['id']); $wpdb->delete($table, ['id' => $id], ['%d']); } } $start_date = get_option('telegram_cashback_start_date', ''); $utm_rows = $wpdb->get_results("SELECT * FROM `$table` ORDER BY id DESC"); echo '
ID | UTM | Сумма | Статус | Действия |
---|---|---|---|---|
' . intval($row->id) . ' | '; echo '' . esc_html($row->utm) . ' | '; echo '' . esc_html(number_format((float)$row->cashback_amount, 2, ',', ' ')) . ' | '; echo '' . ($row->is_active ? 'Активно' : 'Отключено') . ' | '; echo ''; echo ' '; echo ''; echo ' | '; echo '
Пока нет меток |
Статистика будет реализована на следующем шаге.
'; } echo '