Aufgabe 5 – Custom REST API Endpoint
Projektarbeit / Recherche
Schwierigkeitsgrad: Fortgeschritten | Dauer: ca. 5–8 Std.
Szenario
Du entwickelst ein Plugin, das einen eigenen REST-Endpoint bereitstellt – z.B. für eine Mobile App oder ein JavaScript-Frontend, das WordPress-Daten per Fetch/Ajax abruft. Gleichzeitig lernst du, wie Authentifizierung und Permissions in der WP REST API funktionieren.
Lernziele
- REST-Route mit
register_rest_route()registrieren - Callback-Funktion und Permission-Callback implementieren
- GET- und POST-Methoden unterscheiden
- Antworten als
WP_REST_Responsezurückgeben - Den Endpoint mit Fetch-API oder Postman testen
Aufgabenstellung
- Recherche: Erkläre den Unterschied zwischen der WordPress REST API und dem älteren
admin-ajax.php-Ansatz. Wann ist welcher sinnvoll? - Öffentlicher Endpoint: Erstelle
GET /wp-json/mein-plugin/v1/beitraege, der die letzten 5 Beiträge als JSON zurückgibt (Titel, Datum, Permalink). - Geschützter Endpoint: Erstelle
POST /wp-json/mein-plugin/v1/notiz, der eine Notiz (Custom Post) speichert – nur für eingeloggte Nutzer (is_user_logged_in()im Permission-Callback). - Frontend-Konsument: Schreibe eine einfache HTML-Seite (oder ein WordPress-Template), das den GET-Endpoint per
fetch()aufruft und die Beiträge im DOM anzeigt. - Dokumentation: Beschreibe deine Endpoints in einer API-Übersicht (Methode, URL, Parameter, Antwort-Schema).
Starter-Code
<?php
/**
* Plugin Name: Mein REST Plugin
* Version: 1.0
*/
if ( ! defined( 'ABSPATH' ) ) exit;
add_action( 'rest_api_init', function () {
// Öffentlicher GET-Endpoint
register_rest_route( 'mein-plugin/v1', '/beitraege', [
'methods' => WP_REST_Server::READABLE,
'callback' => 'mein_plugin_get_beitraege',
'permission_callback' => '__return_true', // öffentlich
]);
// Geschützter POST-Endpoint
register_rest_route( 'mein-plugin/v1', '/notiz', [
'methods' => WP_REST_Server::CREATABLE,
'callback' => 'mein_plugin_post_notiz',
'permission_callback' => function() {
return is_user_logged_in(); // TODO: ggf. capability prüfen
},
]);
});
function mein_plugin_get_beitraege( WP_REST_Request $request ) {
// TODO: WP_Query bauen, Daten aufbereiten, WP_REST_Response zurückgeben
return new WP_REST_Response( [], 200 );
}
function mein_plugin_post_notiz( WP_REST_Request $request ) {
$titel = sanitize_text_field( $request->get_param('titel') );
// TODO: wp_insert_post(), Fehlerbehandlung
return new WP_REST_Response( [ 'success' => true ], 201 );
}
Tipp: Teste deine Endpoints direkt im Browser mit /wp-json/mein-plugin/v1/beitraege oder nutze das Tool Postman für POST-Requests mit JSON-Body.
Lernziel-Tags
register_rest_route()WP_REST_Responsepermission_callbacksanitize_text_field()fetch() APIPostmanAPI-Dokumentation
Abgabe: Plugin als .zip + API-Dokumentation (.md oder PDF) + HTML-Testseite + Code-Review mit einem Partner
Ähnliche Beiträge
- Aufgabe 3 – Custom Post Type -Event Plugin (45.18%)
- Aufgabe 4 – Eigenen Shortcode entwickeln (37.46%)
- Aufgabe 2 Mini-Plugin: Auto-Copyright-Jahr (34.55%)
- Plugin Entwicklung Lernen (32.93%)
- Events Manager (30.17%)
