tschaki
WordPress Shortcode erstellen
Home » WordPress REST API erweitern

WordPress REST API erweitern

Jede WordPress Webseite verfügt standardmässig über eine API Schnittstelle. Diese ist dynamisch erweiterbar über beispielsweise ein Plugin oder Theme. Mit jedem neu hinzugefügten Endpunkt kann somit eine Funktion ausgeführt und ein Wert ausgegeben werden.

Wofür WordPress REST API

Die bereits bestehende REST API eignet sich beispielsweise bestens um Custom Post Types auszulesen, mit allen darin befindlichen Beiträgen. Filtermöglichkeiten bestehen ebenfalls via URL.

Um auf die Übersicht der API Schnittstelle zu gelangen, sieht der URL Aufruf wie folgt aus: https://tschaki.com/wp-json/

In diesem Post behandeln wir die dynamische Erweiterung der Schnittstelle mit POST und GET Requests.

Neuer API Endpunkt für POST hinzufügen

Wird ein neuer Endpunkt via POST definiert, kann dieser nicht als beispielsweise GET abgerufen werden. Dies würde in einem 404-Fehler resultieren. POST eignet sich hervorragend um Nutzerdaten versteckt an die API zu übermitteln. Callback eignet sich bestens, um weitere Funktionen zu platzieren. Beispielsweise bei Verwendung für Datenbank-Einträge.

// Register new WP REST API Endpoint.
add_action( 'rest_api_init', function ( ) {
    register_rest_route( 'namespace', 'apicall', array(
        'methods' => 'POST',
        'callback' => 'api_call'
    ) );
} );

// Callback for new API Endpoint Call.
function api_call( WP_REST_Request $request ) {
    $request_params = $request->get_params( );
  	return $request_params['param']; // returns "sended_param" on success.
}

Weitergegebene POST Variablen durch jQuery Ajax sind als Parameter im Callback auszulesen. Diese sind in einem Objekt angelegt.

In diesem Beispiel Javascript jQuery Snippet kann der neue WordPress API Endpunkt über ein Ajax Request aufgerufen werden.

jQuery.ajax({
	method: "POST",
	timeout: 5000,
	async: true,
	url: "/wp-json/namespace/apicall",
	data: {param: 'sended_param'},
	error: function() {
		console.log( "failed" );
	}
}).done(function ( msg ) {
  	// Maybe markup manipulation.
});

Neuer API Endpunkt für GET hinzufügen

Als GET Endpunkt fällt lediglich die Möglichkeit weg, ein jQuery data: {} Object anzuhängen.

// Register new WP REST API Endpoint.
add_action( 'rest_api_init', function ( ) {
    register_rest_route( 'namespace', 'apicall', array(
        'methods' => 'GET',
        'callback' => 'api_call'
    ) );
} );

// Callback for new API Endpoint Call.
function api_call( ) {
  	return true; // returns "true" on success.
}

Auch in diesem Fall muss der WordPress REST API Endpunkt als GET aufgerufen werden. Als POST resultiert dieser in Code 404.

jQuery.ajax({
	method: "GET",
	timeout: 5000,
	async: true,
	url: "/wp-json/namespace/apicall",
	error: function() {
		console.log( "failed" );
	}
}).done(function ( msg ) {
  	// Maybe markup manipulation.
});

Quelle: WordPress Codex

Trent Bojett

My name is Trent Bojett, I am 28 years old and I live in Switzerland. Because of my enthusiasm for writing and the logical world (= software development) I started this blog in early 2020.

Kommentieren