// ------------------------ // Админка: подменю 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 '
'; echo '

Cashback

'; echo ''; if ($active_tab === 'settings') { echo '
'; wp_nonce_field('telegram_cashback_save','telegram_cashback_nonce'); echo ''; echo ''; echo '
'; echo ''; echo '
'; echo '

'; echo '
'; echo '
'; echo '

UTM метки

'; echo '
'; wp_nonce_field('telegram_cashback_save','telegram_cashback_nonce'); echo ''; echo ' '; echo ' '; echo ' '; echo ''; echo '
'; echo ''; if (!empty($utm_rows)) { foreach ($utm_rows as $row) { echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; } } else { echo ''; } echo '
IDUTMСуммаСтатусДействия
' . intval($row->id) . '' . esc_html($row->utm) . '' . esc_html(number_format((float)$row->cashback_amount, 2, ',', ' ')) . '' . ($row->is_active ? 'Активно' : 'Отключено') . ''; echo '
'; wp_nonce_field('telegram_cashback_save','telegram_cashback_nonce'); echo ''; echo ''; echo ''; echo '
'; echo '
'; wp_nonce_field('telegram_cashback_save','telegram_cashback_nonce'); echo ''; echo ''; echo ''; echo '
'; echo '
Пока нет меток
'; } else { echo '

Статистика будет реализована на следующем шаге.

'; } echo '
'; }