Compare commits
56 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3567a93918 | |||
| 615b404ce6 | |||
| a2f3260854 | |||
| 48648c5632 | |||
| 10f2a66e3a | |||
| e196507634 | |||
| b208dc8592 | |||
| f2f2fb3353 | |||
| 5429c91498 | |||
| 40febaf7e2 | |||
| 9039dcc9ad | |||
| 8f1a1de252 | |||
| d107835455 | |||
| a09dad30ec | |||
| 18a1991af9 | |||
| 6e03ffa962 | |||
| 66a95c48fa | |||
| 51559f12ed | |||
| 605d7f44d5 | |||
| 75668031e0 | |||
| 3248ad9e8d | |||
| c59e37ef68 | |||
| db4255a0ad | |||
| 5e2ae5ba0a | |||
| afeb22422e | |||
| 9b84b18952 | |||
| 3e32e3af32 | |||
| da6fe6cb33 | |||
| 37538a9632 | |||
| e0b63ee2e4 | |||
| d4b5aa350f | |||
| b34d74a62e | |||
| 1f36b22916 | |||
| e19378d815 | |||
| 4720f3b4b6 | |||
| 4832b259a5 | |||
| 0ea27c815c | |||
| 8510e601d9 | |||
| 603ece2f7b | |||
| 2e9c2b2579 | |||
| bd47187b95 | |||
| 4d94218e22 | |||
| 2c8260191f | |||
| 85b6aa8d88 | |||
| 6f5b7d7fcf | |||
| 49a2057705 | |||
| 25b3716fdc | |||
| 1d84f5ffe7 | |||
| 9313fb2e7a | |||
| 2426d4654f | |||
| 5284253ce8 | |||
| d3a17ff5f1 | |||
| fbdd42a856 | |||
| 12786cb553 | |||
| 0e99638960 | |||
| 4f476e478e |
495
README.md
@@ -1,205 +1,382 @@
|
||||
# WP Ingame Shop Pro – NO RCON & CUSTOM CURRENCY
|
||||
# WP Ingame Shop Pro
|
||||
|
||||
Vollautomatischer, Minecraft-basierter Ingame-Shop für WordPress mit Warenkorb, Daily Deal, Kategorien, Gutscheinen und eigenem Währungssystem – komplett ohne RCON, ideal für Bungee-/Proxy-Setups mit externer Ingame-Bestätigung.
|
||||
Ein leistungsstarker, vollständig eigenständiger Ingame-Shop für WordPress, entwickelt für Minecraft-Server (Spigot/Paper).
|
||||
Er bietet ein komfortables Warenkorb-System, Gutscheine, Daily Deals und eine benutzerdefinierte Währung – komplett ohne RCON.
|
||||
|
||||
## Features
|
||||
Dieses Plugin nutzt eine eigene Datenbankstruktur für maximale Performance und vollständige Unabhängigkeit von WordPress-Beiträgen.
|
||||
|
||||
- 🛒 **Warenkorb-System**: Spieler können mehrere Items gleichzeitig kaufen, alles wird als eine Bestellung in der Datenbank gespeichert.
|
||||
- 💾 **Saubere Order-Struktur**: Eine Bestellung = eine Zeile in `wp_wis_orders` mit JSON-Detaildaten (Items + Gutschein).
|
||||
- 📋 **Detail-Ansicht im Backend**: Übersicht wie „1x Diamant, 64x Stein“ inkl. Gutschein und Debug-JSON.
|
||||
- 💰 **Eigene Währung**: Frei konfigurierbarer Währungsname (z. B. Coins, Tokens) statt Euro.
|
||||
- 🖼️ **Auto-Itembilder**: Bilder werden automatisch aus einer Basis-URL + Item-ID (`minecraft:diamond` → `minecraft_diamond.png`) generiert.
|
||||
- 🔥 **Angebote & Sales**: Items können als Angebot markiert und mit eigenem Angebots-Preis versehen werden.
|
||||
- 🎁 **Daily Deal**: Automatisches „Angebot des Tages“ mit frei einstellbarem prozentualem Rabatt, gesteuert über Cron.
|
||||
- 🎫 **Smart Coupons**: Gutscheine als Festbetrag oder Prozent, optional keine Wirkung auf Angebot-Items (Sale).
|
||||
- 🏷️ **Kategorien**: Eigene Taxonomie `wis_category` mit Backend-Tabs/Filter im Shop-Frontend.
|
||||
- 🏆 **Top Spender**: Statistikseite mit Summe aller abgeschlossenen/cancelled Orders pro Spieler.
|
||||
- 🌐 **REST API**: Endpoints für Orders, Pending Orders, Ausführung, Abschluss, Storno, Gutscheinprüfung und Bulk-Import.
|
||||
- 📥 **Bulk-Import**: JSON-Import von Items (z. B. von `minecraft-ids.com`) in Batches inkl. Fortschrittsanzeige.
|
||||
- 🧹 **Bulk Delete**: Massenlöschung für Items, Server und Gutscheine mit Admin-Notice.
|
||||
- 🎮 **Ingame-Integration ready**: Orders werden über REST abgeholt und serverseitig (z. B. Plugin/Bot) bestätigt, kein RCON notwendig.
|
||||
---
|
||||
|
||||
## Installation
|
||||
## ✨ Highlights
|
||||
|
||||
1. Plugin-Datei (`wp-ingame-shop-pro.php` o. ä.) in den Ordner `wp-content/plugins/wp-ingame-shop-pro` legen.
|
||||
2. Im WordPress-Backend unter „Plugins“ das Plugin **aktivieren**.
|
||||
3. Bei Aktivierung werden automatisch die Tabellen `wp_wis_orders` und `wp_wis_coupons` erstellt sowie Cron-Events für den Daily Deal registriert.
|
||||
4. Cron muss auf dem Server funktionieren (WP-Cron oder System-Cron, der `wp-cron.php` triggert).
|
||||
- 🛒 **Warenkorb-System**
|
||||
Mehrere Items pro Bestellung.
|
||||
Eine Bestellung = eine saubere Datenbankzeile mit JSON-Details.
|
||||
|
||||
## Admin-Bereich
|
||||
- ⚡ **Mehrfachbearbeitung (Bulk Edit)**
|
||||
Hunderte Items gleichzeitig bearbeiten (Preis, Server, Kategorie, Status).
|
||||
|
||||
Nach der Aktivierung erscheint im Backend das Menü **„Ingame Shop“** mit mehreren Unterseiten.
|
||||
- 💰 **Eigene Währung**
|
||||
„Coins“, „Tokens“ oder beliebige virtuelle Währungen.
|
||||
|
||||
### Menüs
|
||||
- 🖼️ **Automatische Bildzuweisung**
|
||||
`minecraft:diamond` → `minecraft_diamond.png`
|
||||
Ideal für große Bildsammlungen (1500+ Dateien).
|
||||
|
||||
- **Ingame Shop (Übersicht)**
|
||||
- Globale Einstellungen, Feature-Übersicht, Bulk-Import.
|
||||
- **Bestellungen**
|
||||
- Liste aller Orders, Detailansicht, manuelles Löschen/Abschließen.
|
||||
- **Top Spender**
|
||||
- Rangliste nach ausgegebenen Coins (inkl. Anzahl Bestellungen).
|
||||
- **Items** (CPT `wis_item`)
|
||||
- Verwaltung der Shop-Items inkl. Preis, Serverzuordnung, Kategorie, Angebot, Daily Deal.
|
||||
- **Kategorien** (`wis_category`)
|
||||
- Hierarchische Kategorien für Items (werden im Frontend als Tabs angezeigt).
|
||||
- **Servers** (CPT `wis_server`)
|
||||
- Reine Serverdefinition (Name/Slug), dient zur Filterung und Zuordnung im Shop.
|
||||
- **Gutscheine** (CPT `wis_coupon`)
|
||||
- Verwaltung von Gutscheincodes inkl. Typ, Wert, Limit, Ablaufdatum.
|
||||
- 🔥 **Daily Deal & Sale-System**
|
||||
|
||||
### Globale Einstellungen
|
||||
- 🎫 **Smart Coupons**
|
||||
Prozent- oder Festbetrag, optional nicht kombinierbar mit Angeboten.
|
||||
|
||||
Zu finden unter **Ingame Shop → Ingame Shop (Übersicht)**.
|
||||
- 🌐 **REST API ohne RCON**
|
||||
|
||||
- **Shop Header Text**
|
||||
- Text im grünen Info-Balken im Frontend, leer = kein Balken.
|
||||
- **Währungsname**
|
||||
- Anzeigeeinheit für Preise, z. B. „Coins“.
|
||||
- **Bilder Basis-URL**
|
||||
- Basis-URL, an die `ITEM_ID.png` angehängt wird, z. B. `https://assets.minecraft-ids.com/1_21_10/`.
|
||||
- **Gutscheine bei Angeboten ausschließen**
|
||||
- Wenn aktiviert, wirken Gutscheine nur auf normale Items, nicht auf als Angebot markierte Items.
|
||||
- **Daily Deal aktivieren + Rabatt (%)**
|
||||
- Aktiviert den täglichen Cron, der ein zufälliges Item (mit Preis > 0, bisher kein Daily Deal) auswählt und rabattiert.
|
||||
- 📊 **Top-Spender & Umsatzstatistik**
|
||||
|
||||
## Custom Post Types & Metaboxen
|
||||
---
|
||||
|
||||
### Shop Items (`wis_item`)
|
||||
## 🚀 Installation
|
||||
|
||||
Unter **Ingame Shop → Items**.
|
||||
1. Ordner `wp-ingame-shop-pro` nach:
|
||||
|
||||
Metabox **„Item Einstellungen“**:
|
||||
wp-content/plugins/
|
||||
|
||||
- **Status-Anzeige**
|
||||
- Zeigt an, ob das Item aktiv im Shop ist (publish + Preis > 0) oder inaktiv.
|
||||
- **Preis (Coins)**
|
||||
- Integer > 0 macht das Item automatisch aktiv (Status publish), 0 schaltet auf Entwurf.
|
||||
- **Item ID (z. B. `minecraft:diamond`)**
|
||||
- Wird für die Bild-URL und das JSON-Payload (Ingame-Give) verwendet.
|
||||
- **Kategorie(n)**
|
||||
- Checkbox-Liste aller `wis_category`-Terms, beeinflusst die Tabs im Frontend.
|
||||
- **Daily Deal (Angebot des Tages)**
|
||||
- Option „manuell als Angebot des Tages setzen“, überschreibt die Automatik bis Mitternacht.
|
||||
- **Angebot / Sale**
|
||||
- Checkbox „Als Angebot markieren 🔥“ + optionaler Angebots-Preis.
|
||||
- Angebots-Preis wird angezeigt, normaler Preis durchgestrichen.
|
||||
- **Beschreibung**
|
||||
- Langtext, der im Frontend unter dem Titel angezeigt wird.
|
||||
- **Server zuweisen**
|
||||
- Checkbox-Liste aller definierten `wis_server`, steuert Sichtbarkeit und Kaufbarkeit pro Server.
|
||||
2. Plugin im WordPress Backend aktivieren.
|
||||
3. Fertig.
|
||||
|
||||
Zusätzlich existiert eine Auto-Status-Logik, die beim Speichern `publish/draft` abhängig vom Preis setzt.
|
||||
Bei Aktivierung werden automatisch erstellt:
|
||||
|
||||
### Server (`wis_server`)
|
||||
- Datenbanktabellen (`wp_wis_*`)
|
||||
- Cron-Jobs für Daily Deals
|
||||
|
||||
Metabox „Server Einstellungen“ zeigt nur einen Hinweis, dass keine RCON-Daten notwendig sind.
|
||||
---
|
||||
|
||||
- Der **Post-Slug** des Servers wird als Server-ID im Frontend/REST verwendet.
|
||||
# 🖼️ Bilder-Konfiguration (Gitea Raw)
|
||||
|
||||
### Gutscheine (`wis_coupon`)
|
||||
## 📂 Basis-URL für alle Item-Bilder
|
||||
|
||||
Metabox **„Gutschein Einstellungen“**:
|
||||
```
|
||||
https://git.viper.ipv64.net/M_Viper/WP-Ingame-Shop-Pro/raw/branch/main/images/
|
||||
```
|
||||
|
||||
- **Gutschein Code** (wird automatisch in Großbuchstaben gespeichert).
|
||||
- **Rabattart**: „Festbetrag“ oder „Prozentual“.
|
||||
- **Wert**: Coins oder Prozent, abhängig vom Typ.
|
||||
- **Nutzungslimit**: Wie oft der Gutschein eingelöst werden darf.
|
||||
- **Ablaufdatum** (optional).
|
||||
- Hinweis, wenn global eingestellt ist, dass Gutscheine bei Angeboten nicht gelten.
|
||||
### 🔧 Eintragen im Plugin
|
||||
|
||||
Beim Speichern werden die Daten zusätzlich in der Tabelle `wp_wis_coupons` gespiegelt und `used_count` synchronisiert.
|
||||
**Ingame Shop → Einstellungen → Bilder Basis-URL**
|
||||
|
||||
Beim Löschen eines Gutschein-Posts wird der Eintrag aus `wp_wis_coupons` wieder entfernt.
|
||||
Eintragen:
|
||||
|
||||
## REST API
|
||||
```
|
||||
https://git.viper.ipv64.net/M_Viper/WP-Ingame-Shop-Pro/raw/branch/main/images/
|
||||
```
|
||||
|
||||
Alle Routen liegen unter `wis/v1/…`.
|
||||
---
|
||||
|
||||
- `POST /wis/v1/order`
|
||||
- Erstellt eine neue Bestellung.
|
||||
- Request-Body: `{ player, cart: [{id, quantity}], server, coupon_code? }`.
|
||||
- Validiert Items (Preis > 0, Serverzuordnung, Angebot/Normal, Gutscheinlogik) und speichert Order inkl. JSON mit realen Item-IDs und ggf. Gutschein-Rabatt.
|
||||
- `GET /wis/v1/pending_orders?player=Name`
|
||||
- Liefert bis zu 10 offene Bestellungen (`status = pending`) eines Spielers.
|
||||
- `POST /wis/v1/execute_order`
|
||||
- Setzt Status einer Bestellung auf `processing` (z. B. wenn der Ingame-Executor mit der Ausgabe beginnt).
|
||||
- `POST /wis/v1/complete_order`
|
||||
- Setzt Status auf `completed`.
|
||||
- `POST /wis/v1/cancel_order`
|
||||
- Setzt Status auf `cancelled`.
|
||||
- `POST /wis/v1/validate_coupon`
|
||||
- Prüft einen Gutschein gegen aktuelle Cart-Daten (inkl. „nur normale Items“ Logik) und liefert Typ, Wert und Message.
|
||||
- `POST /wis/v1/fetch_remote_data`
|
||||
- Lädt JSON von externer URL (z. B. `https://minecraft-ids.com/data/1.21.10.json`) und gibt eine normalisierte Items-Liste zurück.
|
||||
- `POST /wis/v1/import_batch`
|
||||
- Importiert ein Items-Array als `wis_item`-Posts (draft, `_wis_item_id`, `_wis_price` = 0), überspringt Duplikate.
|
||||
## 📌 Automatische Bildlogik
|
||||
|
||||
Alle REST-Endpunkte sind aktuell ohne Authentifizierung (`permission_callback => __return_true`), für öffentliche Nutzung sollte gegebenenfalls Absicherung ergänzt werden.
|
||||
Item-ID im Shop:
|
||||
|
||||
## Frontend Shortcode
|
||||
```
|
||||
minecraft:diamond
|
||||
```
|
||||
|
||||
Der Shop wird per Shortcode eingebunden:
|
||||
Automatisch geladen wird:
|
||||
|
||||
```text
|
||||
```
|
||||
https://git.viper.ipv64.net/M_Viper/WP-Ingame-Shop-Pro/raw/branch/main/images/minecraft_diamond.png
|
||||
```
|
||||
|
||||
Regeln:
|
||||
|
||||
- `:` wird zu `_`
|
||||
- Dateiendung = `.png`
|
||||
- Keine manuelle Bildzuweisung notwendig
|
||||
|
||||
---
|
||||
|
||||
# 📥 Quick JSON Import (Direkt von Gitea)
|
||||
|
||||
## 🔗 Import-URL
|
||||
|
||||
```
|
||||
https://git.viper.ipv64.net/M_Viper/WP-Ingame-Shop-Pro/raw/branch/main/items.json
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Import durchführen
|
||||
|
||||
1. **Ingame Shop → JSON Tools**
|
||||
2. **Import**
|
||||
3. URL einfügen
|
||||
4. Import starten
|
||||
|
||||
Ideal für:
|
||||
|
||||
- Kompletten Shop-Aufbau in Sekunden
|
||||
- Regelmäßige Synchronisation
|
||||
- Kombination mit Bulk Edit
|
||||
|
||||
---
|
||||
|
||||
# 🛠️ Admin-Bereich
|
||||
|
||||
## 1️⃣ Einstellungen
|
||||
|
||||
- Shop Header Text
|
||||
- Währungsname (z.B. Coins)
|
||||
- Bilder Basis-URL
|
||||
- Daily Deal (% Rabatt)
|
||||
- Gutscheine auf Sale-Items erlauben / verbieten
|
||||
|
||||
---
|
||||
|
||||
## 2️⃣ Items Verwaltung
|
||||
|
||||
### Einzelbearbeitung
|
||||
|
||||
- Item ID (`minecraft:diamond`)
|
||||
- Preis
|
||||
- Angebotspreis
|
||||
- Server-Zuweisung
|
||||
- Kategorie
|
||||
- Status (`publish` / `draft`)
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Bulk Edit (Mehrfachbearbeitung)
|
||||
|
||||
Beispiel: 100 Items einem Server zuweisen.
|
||||
|
||||
1. Items anhaken
|
||||
2. „Massenaktionen“ wählen:
|
||||
- Server zuweisen
|
||||
- Preis ändern
|
||||
- Kategorie setzen
|
||||
- Status ändern
|
||||
3. Anwenden
|
||||
4. Änderungen speichern
|
||||
|
||||
Überschreibt bestehende Server-/Kategorie-Zuweisungen.
|
||||
|
||||
---
|
||||
|
||||
## 3️⃣ Weitere Bereiche
|
||||
|
||||
### 📦 Bestellungen
|
||||
|
||||
- Bestellungen anzeigen
|
||||
- Manuell abschließen
|
||||
- Stornieren
|
||||
|
||||
Status:
|
||||
|
||||
```
|
||||
pending
|
||||
processing
|
||||
completed
|
||||
cancelled
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 🌐 Server
|
||||
|
||||
Beispiel:
|
||||
|
||||
```
|
||||
lobby
|
||||
survival
|
||||
skyblock
|
||||
```
|
||||
|
||||
Frontend-Filter werden automatisch generiert.
|
||||
|
||||
---
|
||||
|
||||
### 📂 Kategorien
|
||||
|
||||
Beispiel:
|
||||
|
||||
```
|
||||
Blöcke
|
||||
Waffen
|
||||
Rüstung
|
||||
Ranks
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 🎫 Gutscheine
|
||||
|
||||
- `fixed` (Festbetrag)
|
||||
- `percent` (Prozent)
|
||||
- Ablaufdatum
|
||||
- Nutzungslimit
|
||||
- Ausschluss bei Angeboten
|
||||
|
||||
---
|
||||
|
||||
### 📊 Top Spender
|
||||
|
||||
Automatische Auswertung der Bestellungen.
|
||||
|
||||
---
|
||||
|
||||
# 🎮 Frontend Nutzung
|
||||
|
||||
Shortcode:
|
||||
|
||||
```
|
||||
[ingame_shop_form]
|
||||
```
|
||||
|
||||
## Layout & Funktionen
|
||||
---
|
||||
|
||||
- Modernes Grid mit Karten (Bild, Name, Preis, Server, Badges, Menge).
|
||||
- Filter: Suche, „Nur Angebote“, Server-Auswahl und Kategorie-Tabs.
|
||||
- Badges:
|
||||
- „🔥 Angebot“ für Sale-Items.
|
||||
- „🎁 Angebot des Tages“ für den aktiven Daily Deal.
|
||||
- Mengensteuerung je Item (Buttons + Input).
|
||||
- Warenkorb-Button (Badge mit Gesamtanzahl der Items) öffnet ein Modal.
|
||||
- Gutscheincode-Feld im Checkout mit Live-Validierung via `validate_coupon`.
|
||||
- Dynamische Berechnung:
|
||||
- Normaler Teil des Warenkorbs, ggf. rabattiert.
|
||||
- Angebots-Items, die optional von Gutscheinen ausgenommen sind.
|
||||
- Validierung:
|
||||
- Alle ausgewählten Items müssen für den gewählten Server freigeschaltet sein.
|
||||
- Spielername und Server sind Pflichtfelder.
|
||||
- Beim Abschließen des Kaufs wird `POST /wis/v1/order` aufgerufen, die Antwort wird im Modal angezeigt und der Warenkorb geleert.
|
||||
## Spieler-Funktionen
|
||||
|
||||
## Datenbank-Struktur
|
||||
- Suche
|
||||
- Server-Filter
|
||||
- Kategorie-Tabs
|
||||
- Warenkorb
|
||||
- Gutschein-Eingabe
|
||||
- Server-Validierung beim Checkout
|
||||
|
||||
### Tabelle `wp_wis_orders`
|
||||
---
|
||||
|
||||
- `id` – Auto-Increment.
|
||||
- `player_name` – Spielername.
|
||||
- `server` – Server-Slug (`wis_server` Postname).
|
||||
- `item_id` – Hier für den Warenkorb pauschal `multi_item_cart`.
|
||||
- `item_title` – Lesbare Zusammenfassung (z. B. „Warenkorb: 1x Diamant, 64x Stein…“).
|
||||
- `price` – Endpreis nach Rabatt.
|
||||
- `quantity` – Anzahl der unterschiedlichen Items im Warenkorb.
|
||||
- `status` – `pending`, `processing`, `completed`, `cancelled`, `failed`.
|
||||
- `response` – JSON mit `items` (real Item IDs + Mengen) und optionalem `coupon`.
|
||||
- `created_at` – Timestamp.
|
||||
# 📡 REST API
|
||||
|
||||
### Tabelle `wp_wis_coupons`
|
||||
Basis:
|
||||
|
||||
- `id` – Auto-Increment.
|
||||
- `code` – Gutschein-Code (unique).
|
||||
- `value` – Wert (Coins oder Prozent).
|
||||
- `type` – `fixed` oder `percent`.
|
||||
- `usage_limit` – Maximal verwendbar.
|
||||
- `used_count` – Bisherige Verwendung.
|
||||
- `expiry` – Ablaufdatum.
|
||||
- `created_at` – Timestamp.
|
||||
```
|
||||
/wp-json/wis/v1/
|
||||
```
|
||||
|
||||
## Cron & Daily Deal
|
||||
---
|
||||
|
||||
- Beim Aktivieren wird ein tägliches Event `wis_daily_deal_event` registriert.
|
||||
- Callback `WIS_Activator::run_daily_deal()`:
|
||||
- Deaktiviert das aktuelle Daily-Deal-Item (`_wis_daily_deal` → 0).
|
||||
- Wählt ein random `wis_item` mit `_wis_price > 0` und ohne `_wis_daily_deal`-Meta.
|
||||
- Berechnet den Rabatt basierend auf `wis_daily_deal_discount` und setzt `_wis_is_offer` + `_wis_offer_price`.
|
||||
## Bestellung erstellen
|
||||
|
||||
## Bulk Import
|
||||
```
|
||||
POST /wis/v1/order
|
||||
```
|
||||
|
||||
- Im Admin-Overview vorhanden.
|
||||
- Eingabefeld für die Import-URL (Default: `https://minecraft-ids.com/data/1.21.10.json`).
|
||||
- Button „Daten laden“ → lädt via REST `fetch_remote_data` und zeigt Anzahl Items an.
|
||||
- Button „Import starten“ → ruft wiederholt `import_batch` mit Batches von 20 Items auf und zeigt Fortschritt an.
|
||||
- Vorhandene Items (gleiche `_wis_item_id`) werden übersprungen, neue Items als Draft mit Preis 0 angelegt.
|
||||
```json
|
||||
{
|
||||
"player": "Name",
|
||||
"server": "survival",
|
||||
"cart": [
|
||||
{ "id": "item_id", "quantity": 1 }
|
||||
],
|
||||
"coupon_code": "CODE"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Offene Bestellungen abrufen
|
||||
|
||||
```
|
||||
GET /wis/v1/pending_orders?player=Name
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Status ändern
|
||||
|
||||
```
|
||||
POST /wis/v1/execute_order
|
||||
POST /wis/v1/complete_order
|
||||
POST /wis/v1/cancel_order
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Gutschein validieren
|
||||
|
||||
```
|
||||
POST /wis/v1/validate_coupon
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 💾 Datenbank-Struktur
|
||||
|
||||
## `wp_wis_items`
|
||||
|
||||
| Feld | Beschreibung |
|
||||
|------|-------------|
|
||||
| item_id | minecraft:diamond |
|
||||
| name | Anzeigename |
|
||||
| price | Standardpreis |
|
||||
| offer_price | Angebotspreis |
|
||||
| is_offer | 0 / 1 |
|
||||
| servers | JSON Array |
|
||||
| categories | JSON Array |
|
||||
| status | publish / draft |
|
||||
|
||||
---
|
||||
|
||||
## `wp_wis_orders`
|
||||
|
||||
| Feld | Beschreibung |
|
||||
|------|-------------|
|
||||
| player_name | Minecraft Name |
|
||||
| server | Zielserver |
|
||||
| item_title | Zusammenfassung |
|
||||
| price | Gesamtpreis |
|
||||
| response | JSON |
|
||||
| status | pending / processing / completed / cancelled |
|
||||
|
||||
---
|
||||
|
||||
## `wp_wis_coupons`
|
||||
|
||||
| Feld | Beschreibung |
|
||||
|------|-------------|
|
||||
| code | Gutschein |
|
||||
| type | fixed / percent |
|
||||
| value | Rabattwert |
|
||||
| usage_limit | Limit |
|
||||
| used_count | Nutzung |
|
||||
|
||||
---
|
||||
|
||||
## `wp_wis_servers`
|
||||
|
||||
Serverdefinitionen
|
||||
|
||||
---
|
||||
|
||||
## `wp_wis_categories`
|
||||
|
||||
Kategoriedefinitionen
|
||||
|
||||
---
|
||||
|
||||
# ⚡ Performance Empfehlung
|
||||
|
||||
Bei 1500+ PNG-Dateien:
|
||||
|
||||
- CDN empfohlen
|
||||
- PNG verlustfrei komprimieren
|
||||
- Gitea Caching aktivieren
|
||||
- Optional WebP-Versionen erstellen
|
||||
|
||||
---
|
||||
|
||||
# 🔐 Sicherheitshinweis
|
||||
|
||||
Aktuell sind API-Endpunkte öffentlich (`__return_true`).
|
||||
|
||||
Für Produktion empfohlen:
|
||||
|
||||
- API-Key Header
|
||||
- Bearer Token
|
||||
- IP Whitelisting
|
||||
- Nonce/Signature System
|
||||
|
||||
---
|
||||
|
||||
# 📦 Meta
|
||||
|
||||
Version: 2.1.0
|
||||
Autor: M_Viper
|
||||
Lizenz: GPL-2.0-or-later
|
||||
|
||||
BIN
images/minecraft_acacia_boat.png
Normal file
|
After Width: | Height: | Size: 932 B |
BIN
images/minecraft_acacia_button.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
images/minecraft_acacia_chest_boat.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
images/minecraft_acacia_door.png
Normal file
|
After Width: | Height: | Size: 580 B |
BIN
images/minecraft_acacia_fence.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
images/minecraft_acacia_fence_gate.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
images/minecraft_acacia_hanging_sign.png
Normal file
|
After Width: | Height: | Size: 781 B |
BIN
images/minecraft_acacia_leaves.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
images/minecraft_acacia_log.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
images/minecraft_acacia_planks.png
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
BIN
images/minecraft_acacia_pressure_plate.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
images/minecraft_acacia_sapling.png
Normal file
|
After Width: | Height: | Size: 873 B |
BIN
images/minecraft_acacia_shelf.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
images/minecraft_acacia_sign.png
Normal file
|
After Width: | Height: | Size: 721 B |
BIN
images/minecraft_acacia_slab.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
images/minecraft_acacia_stairs.png
Normal file
|
After Width: | Height: | Size: 5.7 KiB |
BIN
images/minecraft_acacia_trapdoor.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
images/minecraft_acacia_wood.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
images/minecraft_activator_rail.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
images/minecraft_air.png
Normal file
|
After Width: | Height: | Size: 390 B |
BIN
images/minecraft_allay_spawn_egg.png
Normal file
|
After Width: | Height: | Size: 895 B |
BIN
images/minecraft_allium.png
Normal file
|
After Width: | Height: | Size: 658 B |
BIN
images/minecraft_amethyst_block.png
Normal file
|
After Width: | Height: | Size: 5.7 KiB |
BIN
images/minecraft_amethyst_cluster.png
Normal file
|
After Width: | Height: | Size: 903 B |
BIN
images/minecraft_amethyst_shard.png
Normal file
|
After Width: | Height: | Size: 764 B |
BIN
images/minecraft_ancient_debris.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
images/minecraft_andesite.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
images/minecraft_andesite_slab.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
images/minecraft_andesite_stairs.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
images/minecraft_andesite_wall.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
images/minecraft_angler_pottery_sherd.png
Normal file
|
After Width: | Height: | Size: 825 B |
BIN
images/minecraft_anvil.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
images/minecraft_apple.png
Normal file
|
After Width: | Height: | Size: 790 B |
BIN
images/minecraft_archer_pottery_sherd.png
Normal file
|
After Width: | Height: | Size: 833 B |
BIN
images/minecraft_armadillo_scute.png
Normal file
|
After Width: | Height: | Size: 648 B |
BIN
images/minecraft_armadillo_spawn_egg.png
Normal file
|
After Width: | Height: | Size: 846 B |
BIN
images/minecraft_armor_stand.png
Normal file
|
After Width: | Height: | Size: 744 B |
BIN
images/minecraft_arms_up_pottery_sherd.png
Normal file
|
After Width: | Height: | Size: 844 B |
BIN
images/minecraft_arrow.png
Normal file
|
After Width: | Height: | Size: 635 B |
BIN
images/minecraft_axolotl_bucket.png
Normal file
|
After Width: | Height: | Size: 977 B |
BIN
images/minecraft_axolotl_spawn_egg.png
Normal file
|
After Width: | Height: | Size: 808 B |
BIN
images/minecraft_azalea.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
images/minecraft_azalea_leaves.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
images/minecraft_azure_bluet.png
Normal file
|
After Width: | Height: | Size: 711 B |
BIN
images/minecraft_baked_potato.png
Normal file
|
After Width: | Height: | Size: 804 B |
BIN
images/minecraft_bamboo.png
Normal file
|
After Width: | Height: | Size: 683 B |
BIN
images/minecraft_bamboo_block.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
images/minecraft_bamboo_button.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
images/minecraft_bamboo_chest_raft.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
images/minecraft_bamboo_door.png
Normal file
|
After Width: | Height: | Size: 879 B |
BIN
images/minecraft_bamboo_fence.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
images/minecraft_bamboo_fence_gate.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
images/minecraft_bamboo_hanging_sign.png
Normal file
|
After Width: | Height: | Size: 963 B |
BIN
images/minecraft_bamboo_mosaic.png
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
BIN
images/minecraft_bamboo_mosaic_slab.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
images/minecraft_bamboo_mosaic_stairs.png
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
BIN
images/minecraft_bamboo_planks.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
images/minecraft_bamboo_pressure_plate.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
images/minecraft_bamboo_raft.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
images/minecraft_bamboo_shelf.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
images/minecraft_bamboo_sign.png
Normal file
|
After Width: | Height: | Size: 909 B |
BIN
images/minecraft_bamboo_slab.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
images/minecraft_bamboo_stairs.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
images/minecraft_bamboo_trapdoor.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
images/minecraft_barrel.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
images/minecraft_barrier.png
Normal file
|
After Width: | Height: | Size: 566 B |
BIN
images/minecraft_basalt.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
images/minecraft_bat_spawn_egg.png
Normal file
|
After Width: | Height: | Size: 787 B |
BIN
images/minecraft_beacon.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
images/minecraft_bedrock.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
images/minecraft_bee_nest.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
images/minecraft_bee_spawn_egg.png
Normal file
|
After Width: | Height: | Size: 840 B |
BIN
images/minecraft_beef.png
Normal file
|
After Width: | Height: | Size: 789 B |
BIN
images/minecraft_beehive.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
images/minecraft_beetroot.png
Normal file
|
After Width: | Height: | Size: 731 B |
BIN
images/minecraft_beetroot_seeds.png
Normal file
|
After Width: | Height: | Size: 614 B |
BIN
images/minecraft_beetroot_soup.png
Normal file
|
After Width: | Height: | Size: 656 B |
BIN
images/minecraft_bell.png
Normal file
|
After Width: | Height: | Size: 786 B |
BIN
images/minecraft_big_dripleaf.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
images/minecraft_birch_boat.png
Normal file
|
After Width: | Height: | Size: 937 B |
BIN
images/minecraft_birch_button.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
images/minecraft_birch_chest_boat.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
images/minecraft_birch_door.png
Normal file
|
After Width: | Height: | Size: 625 B |
BIN
images/minecraft_birch_fence.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
images/minecraft_birch_fence_gate.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
images/minecraft_birch_hanging_sign.png
Normal file
|
After Width: | Height: | Size: 805 B |
BIN
images/minecraft_birch_leaves.png
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
BIN
images/minecraft_birch_log.png
Normal file
|
After Width: | Height: | Size: 5.6 KiB |
BIN
images/minecraft_birch_planks.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
images/minecraft_birch_pressure_plate.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
images/minecraft_birch_sapling.png
Normal file
|
After Width: | Height: | Size: 854 B |
BIN
images/minecraft_birch_shelf.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
images/minecraft_birch_sign.png
Normal file
|
After Width: | Height: | Size: 736 B |
BIN
images/minecraft_birch_slab.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
images/minecraft_birch_stairs.png
Normal file
|
After Width: | Height: | Size: 5.7 KiB |
BIN
images/minecraft_birch_trapdoor.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
images/minecraft_birch_wood.png
Normal file
|
After Width: | Height: | Size: 5.7 KiB |
BIN
images/minecraft_black_banner.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
images/minecraft_black_bed.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |