...
✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

So fügen Sie benutzerdefinierte Endpunkte zur WordPress-API hinzu

63

Kürzlich habe ich an einem Projekt gearbeitet, bei dem wir AngularJS als Frontend und WordPress als Backend verwenden wollten. Um Daten zwischen AngularJS und WordPress auszutauschen, haben wir die WordPress REST API verwendet. Es war eine gute Erfahrung, mit der REST-API in WordPress zu arbeiten. WordPress bietet eine sehr saubere und effiziente Möglichkeit, die REST-API zu verwenden. Mit diesem beliebten CMS können Sie auch den benutzerdefinierten Endpunkt erstellen, um Daten darüber zu senden/zu empfangen.

In diesem Artikel untersuchen wir, wie Sie einen benutzerdefinierten Endpunkt in der WordPress-REST-API erstellen. Ich werde den benutzerdefinierten Endpunkt für die GET- und POST-Anforderung erstellen.

Verwendung der WordPress-REST-API

Jeder weiß um die Popularität von mobilen Anwendungen und JavaScript-Frameworks. Beim Erstellen einer mobilen Anwendung oder Website mit dem JavaScript-Framework müssen Sie für den Datenaustausch mit dem Backend interagieren.

Man kann jede Plattform wie WordPress, Laravel für Backend-Zwecke wählen. Die einzige Voraussetzung ist, dass Sie auf Ihrer Back-End-Plattform über API-Endpunkte verfügen, um Daten mit dem Front-End auszutauschen. Das Frontend-System gibt einen API-Aufruf an das Backend. Im Backend sollten wir ein System aufbauen, das die API-Anfragen empfängt und verarbeitet.

Meistens haben wir zwei Arten von Anfragen in API-Endpunkten verwendet – GET und POST. Während wir API mit GET-Anfrage aufrufen, gibt API als Antwort Daten aus der Datenbank oder löscht die Daten in der Datenbank. Bei POST-Anfragen fügen wir entweder Datensätze in die Datenbank ein oder vergleichen die Daten mit der Datenbank. Natürlich ist das keine Faustregel. Die Benutzer können entscheiden, wie es sich je nach ihren Anforderungen verhält.

Autorisierung mit WordPress REST API

Die WordPress-REST-API erfordert, dass Sie dem Basic Auth-Flow folgen. Beim Basic Auth müssen Sie beim Senden einer API-Anfrage ein Token im Authorization-Header senden. Ab WordPress 5.6 wird eine neue Funktion „Anwendungspasswörter” in das System eingeführt. Dieses Anwendungskennwort (mit Benutzernamen) kann als Token im Autorisierungsheader verwendet werden.

Die Anwendungspasswörter stehen allen Benutzern auf Websites zur Verfügung, die über SSL/HTTPS bereitgestellt werden. Wenn Sie aus irgendeinem Grund kein SSL auf Ihrer Website verwenden, stellen Sie es mit dem folgenden Filter zur Verfügung.

add_filter( 'wp_is_application_passwords_available', '__return_true' );

Die Option für Anwendungspasswörter finden Sie auf der Seite Benutzer->Profil. Generieren Sie das Kennwort, indem Sie einfach den Anwendungsnamen eingeben.

So fügen Sie benutzerdefinierte Endpunkte zur WordPress-API hinzu

Im Screenshot sehen Sie die Leerzeichen im Passwort. Anwendungskennwörter können mit oder ohne Leerzeichen verwendet werden. Falls vorhanden, werden Leerzeichen einfach entfernt, bevor das Passwort auf der WordPress-Seite gehasht und verifiziert wird.

Jetzt sind Sie mit dem Passwort fertig. Als nächstes müssen Sie zum Erstellen eines Auth-Tokens eine Base64-codierte Version Ihres Benutzernamens und Anwendungskennworts erstellen. Nehmen wir an, Ihr Benutzername ist ‘admin’ und das Passwort ist ‘Ho9c 9vGs AOBG nXb0 FPpr W5vO’. Verwenden Sie die folgende Anweisung, die Ihnen ein endgültig gültiges Token gibt.

<?php
$username = 'admin';
$application_password = 'Ho9c 9vGs AOBG nXb0 FPpr W5vO';
 
echo base64_encode($username.':'.$application_password);

Die obige Anweisung gibt einen Tokenwert als YWRtaW46SG85YyA5dkdzIEFPQkcgblhiMCBGUHByIFc1dk8=. Dieses Token müssen Sie beim Aufrufen der WordPress-REST-API im Authorization-Header senden.

Anmeldung mit WordPress REST API

Wir sind bereit mit dem Wert des Basic Auth-Tokens. Lassen Sie uns nun einen benutzerdefinierten Endpunkt für ein Anmeldesystem erstellen. Im folgenden Code schreiben wir einen API-Endpunkt, der Benutzeranmeldeinformationen empfängt und prüft, ob die Details korrekt sind oder nicht. Sie müssen diesen Code in Ihre Themendatei einfügen functions.php.

add_action(
    'rest_api_init',
    function() {
        register_rest_route(
            'api',
            'login',
            array(
                'methods'  => 'POST',
                'callback' => 'login',
            )
        );
    }
);

WordPress bietet eine Aktion ‘rest_api_init’, mit der wir unsere benutzerdefinierten Endpunkte erstellen können. Hier verwende ich die Funktion register_rest_route, die den obigen API-Endpunkt als YOUR_SITE_URL/wp-json/api/login erzeugt.

In unserem Code ist ‘api’ der Namespace, ‘login’ ist die Route, eine Methode ist ‘POST’ und die Callback-Funktion ist ‘login’. Die Callback-Methode hat eine tatsächliche Logik.

Um eine Logik für den Login-Flow zu schreiben, sind die erforderlichen POST-Parameter E-Mail und Passwort, die zusammen mit dem Authorization-Header vom Frontend gesendet werden sollten. Wenn Sie diese Daten veröffentlichen, müssen Sie sie im JSON-Format senden. Zum Beispiel sende ich vom VSCode mit der Rest Client Extension die POST-Anfrage wie im Screenshot unten gezeigt.

So fügen Sie benutzerdefinierte Endpunkte zur WordPress-API hinzu

Hier haben wir das im vorherigen Schritt erstellte Token als Autorisierungsheaderwert übergeben.

Fügen Sie den folgenden Code für die login()Methode in der functions.phpDatei hinzu.

function login( WP_REST_Request $request) {
    $arr_request = json_decode( $request->get_body() );
 
    if (! empty( $arr_request->email) &&! empty( $arr_request->password)) {
        // this returns the user ID and other info from the user name.
        $user = get_user_by( 'email', $arr_request->email );
 
        if (! $user) {
            // if the user name doesn't exist.
            return [
                'status' => 'error',
                'message' => 'Wrong email address.',
            ];
        }
 
        // check the user's login with their password.
        if (! wp_check_password( $arr_request->password, $user->user_pass, $user->ID)) {
            // if the password is incorrect for the specified user.
            return [
                'status' => 'error',
                'message' => 'Wrong password.',
            ];
        }
 
        return [
            'status' => 'success',
            'message' => 'User credentials are correct.',
        ];
    } else {
        return [
            'status' => 'error',
            'message' => 'Email and password are required.',
        ];
    }
}

Hinweis: Wenn Sie eine Fehlermeldung wie "Es wurde keine Route gefunden, die der URL und der Anfragemethode entspricht" erhalten, müssen Sie Ihren Permalink aktualisieren.

Nachdem Sie den Wert ‘success’ für den Schlüssel ‘status’ erhalten haben, können Sie den Benutzer in der Frontend-Anwendung anmelden.

Erstellen Sie einen Endpunkt für die GET-Anfrage

Wir haben gesehen, wie benutzerdefinierte Endpunkte für POST-Anfragen erstellt werden. Schauen wir uns nun die GET-Anfrage mit der WordPress-REST-API an. Dazu schreibe ich eine API, die einen Benutzer löscht. Vom Frontend aus sollten Sie die ID eines Benutzers als GET-Parameter übergeben.

add_action(
    'rest_api_init',
    function() {
        register_rest_route(
            'api',
            'delete_user/(?P<id>d+)',
            array(
                'methods'  => 'GET',
                'callback' => 'delete_user',
            )
        );
    }
);

Dieser Code generiert einen API-Endpunkt als YOUR_SITE_URL/wp-json/api/delete_user/id. An diesen Endpunkt sollten Sie statt der ID die tatsächliche ID eines Benutzers übergeben.

Die Rückrufmethode delete_userhat den folgenden Code.

function delete_user( $data) {
    // delete the user
    require_once(ABSPATH.'wp-admin/includes/user.php' );
    if (wp_delete_user($data['id'])) {
        return [
            'status' => 'success',
            'message' => 'User deleted successfully.',
        ];
    }
 
    return [
        'status' => 'error',
        'message' => 'It seems you passed the wrong user id.',
    ];
}

Ich hoffe, Sie verstehen, wie Sie einen benutzerdefinierten Endpunkt in der WordPress-REST-API erstellen. Bitte teilen Sie Ihre Gedanken und Vorschläge im Kommentarbereich unten mit.

Zum Thema passende Artikel

Aufnahmequelle: artisansweb.net

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen