Eine externe API in WordPress verbrauchen?

9

Ich habe einen Kunden, der eine WordPress-Website hat, und er möchte sie erweitern, um neue Funktionen hinzuzufügen. Diese Funktionen sind in einer Website enthalten, die ich bereits erstellt habe (eine Art Suchmaschine über eine Datenbank mit einigen Filtern) und die unter neuen Verbesserungen steht.

Was ich vorhabe, ist, eine JSON-API meiner Website zu erstellen (mit allen Suchfunktionen über meine Datenbank) und die WordPress-Website dazu zu bringen, diese API zu verbrauchen. Dann muss ich nur Ansichten erstellen, um Suchergebnisse anzuzeigen.

Das Problem ist, dass ich WordPress überhaupt nicht kenne (für mich ist es etwas, wo Sie Artikel über das Admin-Panel hinzufügen können ...) und ich nicht weiß, wie wir unseren eigenen serverseitigen Code darin schreiben können. Ich habe bei Google gesucht und etwas namens "Plugin" gefunden, aber ich frage mich, ob dies möglich ist und ob dies der einfachste Weg ist, da ich den Code nicht von einem anderen Dritten verwenden lassen muss Party. Wenn es möglich ist, eine WordPress-Installation zu hacken, um meine PHP-Dateien hinzuzufügen, zu codieren, was ich brauche (meine Ansichten mit demselben WordPress-CSS), wäre es einfacher, aber ich weiß nicht, ob es möglich ist?

tahir
quelle
Was genau versuchen Sie zu tun, einen JSON-Feed in WordPress zu lesen, Daten in eine Datenbank einzufügen, über XML-RPC zu veröffentlichen, zu versuchen, klarer zu sein.
Wyck
Lesen Sie den JSON-Feed. Zum Beispiel sollte die WordPress-Site ein Suchformular enthalten. Beim Senden wird ein Get-Aufruf an eine API ausgeführt, die API gibt Objekte in JSON zurück, und ich sollte diese Ergebnisse auf einer Seite der WordPress-Site
ausgeben
1
@ Tahir Ich versuche genau das zu tun. Könnten Sie möglicherweise mitteilen, wie Sie Ihr Ziel erreicht haben?
SAHM

Antworten:

9

Eine kurze Einführung in die WordPress-Entwicklung, die Ihnen helfen oder Sie verwirren könnte:

Das Wichtigste ist: Es ist alles nur PHP. Und außerdem: Bearbeiten Sie nicht die Kerndateien von WordPress, da Sie Probleme bekommen, wenn Sie später auf eine neuere Version aktualisieren. Der einzige Code, den Sie bearbeiten sollten, ist der von Plugins und Themen.

Wenn Sie einer vorhandenen Seite nur etwas hinzufügen müssen, können Sie möglicherweise nur die richtige Themendatei bearbeiten. Wenn Sie jedoch etwas Erweitertes tun müssen (und das Hinzufügen einer zusätzlichen "Ansicht", wie bei einer bestimmten URL, in WordPress weiter fortgeschritten ist), müssen Sie den Code an einer Stelle hinzufügen, die früher im WordPress-Startvorgang geladen wird .

Der Grund dafür ist, dass WordPress immer eine Post-Abfrage für Sie basierend auf der URL durchführt. Wenn Sie zu gehen /category/banana/, werden Beiträge der Kategorie abgefragt bananaund die richtige Vorlagendatei geladen, in der Sie sie nur durchlaufen und anzeigen müssen. Wenn Sie jedoch zu gehen, /custom-view/wird WordPress wahrscheinlich keinen Beitrag finden und die 404-Vorlage laden - was Ihnen keine einfache Möglichkeit gibt, sich zu erholen!

Einige Leute lösen dieses Problem, indem sie "Stub-Seiten" erstellen: Sie erstellen eine Seite in WordPress, auf der der Inhalt nicht wichtig ist, sondern nur die Vorlage: Dort tun sie, was immer sie wollen. Das ist hackisch, aber es funktioniert. Der saubere Weg wäre, zusätzliche Umschreiberegeln zu definieren , die WordPress wissen lassen, dass /custom-view/es sich um eine gültige URL handelt, dass dort jedoch etwas anderes passieren sollte.

Wenn Sie dies tun möchten, müssen Sie sich in das WordPress-Kernsystem einbinden. Der wichtige Teil hier ist das Einhängen , nicht das Ändern . WordPress hat Aktionen und Filter . Eine Aktion ist nur eine Ankündigung ( "Hey, wir schreiben gerade das <head>Tag. Möchten Sie auch etwas hinzufügen?" ). Mit einem Filter können Sie eine Variable ändern ( "Dies ist der Beitragstitel. Wenn Sie ihn ändern möchten, geben Sie einen neuen Wert zurück" ). Der Trick besteht nun natürlich darin, zu wissen, welche Aktionen und Filter Sie verwenden sollten. Dies hängt von der Art und Weise ab, wie Sie auswählen (Stub-Seiten oder neue Umschreiberegeln), daher werde ich hier nicht auf Details eingehen.

Sie definieren die Aktionen und Filter, die Sie in einer Plugin-Datei oder in der Datei functions.php Ihres Themas verwenden möchten . Sie sind insofern besonders, als sie beim Booten von WordPress geladen werden , also bevor die Hauptabfrage ausgeführt wird und so weiter. Eine Plugin-Datei ist nur eine PHP-Datei, die im wp-content/plugins/Verzeichnis mit einem speziellen Header abgelegt wird, damit WordPress ihren Namen lesen und im Verwaltungsbereich anzeigen kann, wo Sie sie aktivieren und deaktivieren können (damit Sie das Plugin vorübergehend im Verzeichnis belassen können deaktiviere es).

Jan Fabry
quelle
2

Grundlagen

Sie müssen die Grundlagen für Plugins und Themes umgehen. Kurz gesagt: Sie sind Ergänzungen zur WordPress-Kernfunktionalität. Normalerweise geht es bei "Plugins" mehr um Funktionalität und bei "Themes" mehr um die "Ansicht". Vielleicht möchten Sie auch ein wenig über die "Plugin API" lesen .

JSON

Möglicherweise möchten Sie das in Core integrierte json2- Skript verwenden, um eine "sichere" API bereitzustellen.

JSON-Beispiel

Der Rest wäre ungefähr so:

$response = json_encode( array( 
     'data' => $your_output 
) );
header( "Content-Type: application/json" );
echo $response;

XML Rpc

Der Codex hat auch etwas über den "XML Rpc" .

HTTP-API

Eine andere Möglichkeit könnten http-Anfragen sein . Stellen Sie sicher, dass Sie die Referenzen am Ende des Links lesen.


Webhooks

Dies ist zusätzlich, da es mehr darum geht , eine verbrauchbare API bereitzustellen. Erklärung hier . Und es gibt auch ein Plugin namens HookPress , das diesen Job für Sie erledigt. Einige Folien des Autors auch.

Kaiser
quelle
1

Ich nehme an, Sie kennen PHP? Oder ist das auch Barriere?

Im Wesentlichen sind Plugins in WordPress Konventionen zum Packen von PHP-Code, damit dieser vom WordPress-Kern erkannt und verarbeitet wird. Es ist eher Format als Funktionalität.

Was die tatsächliche Funktionalität betrifft, können Sie so ziemlich beliebiges PHP ausführen. Es wird jedoch empfohlen, die APIs von WP zu verwenden, um Kompatibilität und Zuverlässigkeit zu gewährleisten.

Stellen Sie sich Ihren Code im Kontext von WP als include(was es technisch sein wird) vor. Von dort aus ist es der Umfang Ihrer Bedürfnisse und Ressourcen, der bestimmt, wie viel davon neu geschrieben wird, um spezifisch für WordPress zu sein.

Selten
quelle
0

Ja, es ist möglich.

Die meisten Plugins werden über sogenannte Hooks erstellt:

zum Beispiel:

add_action("hook", "function")

Es ist ziemlich einfach, sich ein Plugin zu erstellen, wenn Sie wissen, wie dieses Framework funktioniert. Nun ... ich würde empfehlen, sich damit zu beschäftigen, dem umfangreichsten Ort für Wissen (wenn auch nicht dem am besten organisierten - wie PHP. net) ist der WordPress-Codex .

Itai Sagi
quelle