Einen Beitrag mit der REST API von WordPress veröffentlichen

Heute geht es darum, wie man einen Beitrag mit Hilfe der REST API von WordPress veröffentlicht. Außerdem wird kurz erklärt, mit welchem Plugin man am einfachsten und meiner Meinung nach am sichersten die Authentifizierung für den Request einrichtet – da WordPress das von Haus aus nicht für uns macht.

Vorab möchte ich sagen, dass ich die Dokumentation der REST API von WordPress nur ausreichend finde. Außerdem kann ich es überhaupt nicht nachvollziehen, warum man es keine Authentifizierung gibt und man alles mit Plugins lösen muss.

Authentifizierung

Um Beiträge mit Hilfe der REST API von WordPress auf anderen Blogs zu veröffentlichen, muss eine Authentifizierung her. Dafür gibt es einige Plugins, aber meiner Meinung nur ein Plugin, was wirklich sicher und vor allem einfach ist: Application Passwords

Das Plugin lässt sich direkt im WordPress Admin (wp-admin) herunterladen und installieren. Einmal installiert, ermöglicht uns das Plugin das Generieren von Passwörtern (damit nicht das eigenen Benutzerpasswort für den WordPress-Login verwendet werden muss). Das macht das Plugin zum Platzhirisch in Sachen einfacher Authentifizierung.

Um solch ein Passwort zu erhalten, wechselt man im WordPress Admin auf die Seite „Mein Profil“. Dort lässt sich jetzt ganz unten auf der Seite ein Passwort generieren. Mit diesem Passwort und dem Benutzernamen (für die Anmeldung), können wir dann jetzt Beiträge veröffentlichen.

Das Plugin muss immer auf der Zielseite installiert sein, damit es funktioniert. Gegebenenfalls muss dafür die .htaccess im Installationsordner von WordPress angepasst werden, damit die Authentifizierung überhaupt möglich ist. Dafür tragen wir dann folgendes in unsere .htaccess ein:

# BEGIN Pixelbart
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>
# END Pixelbart

Der neue Beitrag

Jetzt geht es darum, dass wir unseren Beitrag mit der REST API von WordPress erstellen wollen. Den Code habe ich nur leicht kommentiert, aber so das ihn jeder versteht:

<?php

/* Request URL */
$url = 'https://meinedomain.de/wp-json/wp/v2/posts';

/**
 * Hier tragen wir jetzt den Benutzer ein, der den Beitrag veröffentlichen soll.
 * Als Passwort verwenden wir das generierte Passwort durch Applications Passwords.
 */
$user = '<benutzername>';
$pass = '<applications passwords>'

/* Request Header */
$headers = [
	'Authorization' => 'Basic ' . base64_encode( $user . ':' . $pass ),
	'cache-control' => 'no-cache',
];

/* Request Body, unser Beitrag */
$body = [
	'status'  => 'draft',
	'type'    => 'post',
	'title'   => 'Meine Überschrift',
	'content' => 'Mein Content',
];

/* Request Arguments */
$args = [
	'headers'     => $headers,
	'body'        => $body,
	'method'      => 'POST',
	'timeout'     => 45,
	'redirection' => 5,
	'httpversion' => '1.0',
	'blocking'    => true,
	'cookies'     => [],
];

/* Unser Request */
$response = wp_remote_post( $url, $args );

/* Falls der Request einen Fehler zurückgibt, wird der Fehler ausgegeben */
if ( is_wp_error( $response ) ) {
	print_r( $response->get_error_message() );
}

So veröffentlichen wir mit Hilfe der REST API von WordPress einen Beitrag auf der Zielseite, auf der das Plugin Application Passwords installiert ist. Der Beitrag wird in Kürze noch aktualisiert, damit du auch weißt, wie du ein Beitragsbild übermittelst.

Weiterführende Links:

Kevin Pliester

Kevin Pliester

Langhaarig und bärtig. Schreibt hier über WordPress, Internet, Gaming und die Selbstständigkeit. Vertreibt viel zu günstige WordPress Wartungen und ist angestellter Web-Entwickler.

Das könnte dich auch interessieren

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.