suchen
HeimWeb-FrontendCSS-TutorialRendern externer API -Daten in WordPress -Blöcken am hinteren Ende

Rendering External API Data in WordPress Blocks on the Back End

Dieser Artikel folgt dem vorherigen Artikel über "Rendern externer API -Daten am vorderen Ende des WordPress -Blocks". Im vorherigen Beitrag haben wir gelernt, wie man eine externe API bekommt und sie in einen Block integriert, der die abgerufenen Daten am vorderen Ende einer WordPress -Website rendert.

Das Problem ist, dass die Art und Weise, wie wir es implementieren, uns daran hindert, Daten im WordPress -Block -Editor zu sehen. Mit anderen Worten, wir können den Block in die Seite einfügen, aber wir können keine Vorschau dazu sehen. Blöcke sind erst nach der Veröffentlichung zu sehen.

Lassen Sie uns das im vorherige Beitrag erstellte Beispiel -Block -Plugin überprüfen. Dieses Mal werden wir WordPress's JavaScript und React -Ökosystem verwenden, um Daten im Backend -Block -Editor zu erhalten und zu rendern.

Verwenden von externer API im WordPress -Block

  • Front-End-Rendering-Daten
  • Backend -Rendering -Daten (Ihr aktueller Standort)
  • Benutzerdefinierte Einstellungen ui
  • erstellen
  • benutzerdefinierte Blockeinstellungen speichern
  • Verwenden von Echtzeit-API-Daten (bald kommt)

Die Ergebnisse des vorherigen Artikels

Vor dem Start ist hier eine Demo, die wir im vorherigen Beitrag abgeschlossen haben, auf die Sie sich beziehen können. Möglicherweise haben Sie festgestellt, dass ich die render_callback -Methode in meinem vorherigen Beitrag verwendet habe, um Eigenschaften zu verwenden und Inhalte in einer PHP -Datei zu rendern.

Dies ist nützlich in Situationen, in denen Sie möglicherweise einige native WordPress- oder PHP -Funktionen verwenden müssen, um dynamische Blöcke zu erstellen. Wenn Sie jedoch nur das JavaScript- und React (JSX) -Kosystem von WordPress verwenden möchten, um statische HTML und Eigenschaften in der Datenbank zu rendern, müssen Sie sich nur auf die Funktionen Edit und Save des Block -Plugins konzentrieren.

    Die Funktion
  • bearbeiten rendern den Inhalt basierend auf dem, was Sie im Block -Editor sehen möchten. Hier können Sie interaktive React -Komponenten verwenden.
  • Die Funktion
  • speichern rendert den Inhalt basierend auf dem, was Sie am vorderen Ende sehen möchten. Sie können hier keine regulären React -Komponenten oder Haken verwenden. Es wird verwendet, um statische HTML zurückzugeben, die sowohl in der Datenbank als auch in Eigenschaften gespeichert sind.

Save Funktionen stehen im Mittelpunkt unserer heutigen Diskussion. Wir können interaktive Komponenten am vorderen Ende erstellen, aber dafür müssen wir sie in einer Datei wie im vorherigen Beitrag manuell einbeziehen und darauf zugreifen.

Ich werde das gleiche mit dem gleichen Ding im vorherigen Beitrag behandeln, aber diesmal können Sie die Vorschau im Block -Editor sehen, bevor Sie in der Frontend veröffentlichen.

Blockeigenschaften

Ich habe eine Erklärung der

-Funktion Eigenschaften im vorherigen Beitrag absichtlich weggelassen, da dies den Hauptinhalt ablenkt (Rendering). edit

Wenn Sie einen React -Hintergrund haben, können Sie verstehen, was ich gesagt habe, aber wenn Sie neu für Sie sind, empfehle ich Ihnen, die Komponenten und Eigenschaften in der React -Dokumentation zu lesen.

Wenn wir das Objekt

in die Konsole aufzeichnen, gibt es eine Liste von WordPress -Funktionen und Variablen zurück, die sich auf unseren Block beziehen: props

Wir brauchen nur das attributes -Objekt und die setAttributes -Funktion, und ich werde sie aus dem props -Objekt in meinem Code dekonstruieren. Im vorherigen Beitrag habe ich den Code von Rapidapi so geändert, dass die API -Daten über setAttributes() gespeichert werden können. Props ist schreibgeschützt, sodass wir sie nicht direkt ändern können.

Das Attribut

Block ähnelt den Zustandsvariablen und setState in React, aber React läuft auf dem Client, während setAttributes() verwendet wird, um das Attribut in der WordPress -Datenbank nach dem Speichern des Posts dauerhaft zu speichern. Wir müssen sie also in attributes.data speichern und sie dann als Anfangswert der useState() -Revariablen aufrufen.

Funktion bearbeiten

Ich werde den HTML -Code kopieren und einfügen, den wir im vorherigen Beitrag in football-rankings.php verwendeten, und bearbeiten, um sich dem JavaScript -Hintergrund zuzuwenden. Denken Sie daran, dass wir im vorherigen Beitrag zwei zusätzliche Dateien für Front-End-Stile und Skripte erstellt haben? Folgen Sie unserem noch heute Ansatz. Es besteht keine Notwendigkeit, diese Dateien zu erstellen. Stattdessen können wir alles in die Edit -Funktion verschieben.

Voller Code `` `` JavaScript importieren {usestate} aus "@WordPress/Element"; Standardfunktion exportieren bearbeiten (Requisiten) { const {Attribute, setAttributes} = props; const [apidata, setapidata] = usemSestate (Attribute.data);

Funktion fetchData () { const options = { Methode: "get", Header: { "X-Rapidapi-Key": "Dein schneller API-Schlüssel", "X-Rapidapi-host": "api-football-v1.p.rapidapi.com", }, }; bringen( "

https://www.php.cn/link/a2a750ff64f34c66249d0f7d3ddd42004 ", Optionen ) .then ((Antwort) = & gt; response.json ()) .then ((Antwort) = & gt; { lass newdata = {... response}; setAttributes ({data: newdata}); setApidata (newdata); }) .Catch ((err) = & gt; console.Error (err)); }

zurückkehren (

Daten Taste aus Fetchdaten ausgelöst /} löst die Datenerfassung aus /} {apidata && (
{/ ID für Style Selector /} hinzufügen
{/ Verwenden Sie ClassName /}
Rang
Logo
Teamname
gp
{/ ... Andere Statistiken ... /}
Form History
{apidata.response [0] .league.standings [0] .Map ((el) = & gt; { // ... Tischdaten rendern ... })}
)}
); } `` 我已经从@WordPress/Element 中包含了React钩子 usestate () ,而不是从React库中使用它。这是因为如果我以常规方式加载,它会为我使用的每个区块下载React。但是,如果我使用@WordPress/Element`, das aus einer einzelnen Quelle lädt, reagiert die WordPress -Ebene.

Diesmal habe ich anstatt den Code in useEffect() in eine Funktion zu wickeln, die nur aufgerufen wird, wenn die Schaltfläche angeklickt wird, damit wir die abgerufenen Daten in Echtzeit vorschauen können. Ich habe eine staatliche Variable namens apiData verwendet, um die Ligabelle bedingt zu rendern. Sobald die Schaltfläche klickt und die Daten abgerufen werden, setze ich apiData auf neue Daten in fetchData() fest und werde mit der verfügbaren Fußball-Ranking-Tabelle HTML erneut rendern.

Sie werden feststellen, dass nach dem Speichern der Post und der Seite der Seite der Ligabisch verschwindet. Dies liegt daran, dass wir den Null -Zustand (NULL) als Anfangswert von apiData verwenden. Wenn ein Beitrag gespeichert ist, wird die Eigenschaft in dem attributes.data -Objekt gespeichert, das wir als Anfangswert der useState() -Rearibel wie unten gezeigt nennen:

const [apiData, setApiData] = useState(attributes.data);

Funktion speichern

Wir werden fast dasselbe mit der Funktion save tun, aber mit ein wenig Modifikation. Zum Beispiel benötigt das Front -End weder die Schaltfläche "Daten abrufen", und die apiData -Statusvariable nicht, da wir sie in der Funktion edit überprüft haben. Wir brauchen jedoch eine zufällige apiData -Rehne, um attributes.data zu überprüfen, um JSX bedingt zu rendern, ansonsten wirft es einen undefinierten Fehler aus und die UI der Blockeditor wird leer.

Voller Code `` `` JavaScript Standardfunktion Exportieren Sie die Standardfunktion Speichern (Requisiten) { const {Attribute} = props; const apidata = Attribute.data;

zurückkehren ( Apidata && (// rendern nur, wenn Apidata verfügbar ist

{/

... Rendering -Tabellendaten, die im Grunde genommen dem Code in der Bearbeitungsfunktion entsprechen ... /} ) ); } `` 如果您在区块已存在于区块编辑器中后修改 speichern "Funktion zeigt den folgenden Fehler an:

Dies liegt daran, dass sich die Tags im gespeicherten Inhalt von denen in unserer neuen save -Funktion unterscheiden. Da wir uns im Entwicklungsmodus befinden, ist es einfacher, Blöcke von der aktuellen Seite zu löschen und sie als neue Blöcke wieder einzuverkosteten. Auf diese Weise wird der aktualisierte Code verwendet und alles wird in Synchronisierung wiederhergestellt.

Wenn wir die render_callback -Methode verwenden, kann dies vermieden werden, da der Ausgang dynamisch und vom PHP und nicht von der save -Funktion gesteuert wird. Daher hat jede Methode ihre eigenen Vor- und Nachteile.

tom nowell liefert eine detaillierte Erklärung dafür, was in der Funktion save in dieser Stapelüberlaufantwort nicht getan werden soll.

Blockstile im Editor und Front-End

festlegen

In Bezug auf den Stil wird es fast genauso sein, wie wir es im vorherigen Beitrag gesehen haben, aber es gibt einige geringfügige Änderungen, die ich in den Kommentaren erklärt habe. Ich stelle hier nur den vollständigen Stil an, da es sich nur um einen Proof of Concept handelt, nicht um das, was Sie kopieren und einfügen möchten (es sei denn, Sie benötigen einen Block, der die Fußball -Rangliste im Stil wie dieses zeigt). Beachten Sie, dass ich immer noch SCSS verwende, das zur Build -Zeit zu CSS kompiliert.

Editor Style css /* 目标所有带有 data-title="Football Rankings" 的区块 */ .block-editor-block-list__layout .block-editor-block-list__block.wp-block[data-title="Football Rankings"] { /* 默认情况下,区块被限制在 650px 最大宽度加上其他设计特定代码 */ max-width: unset; /* ... 其他样式 ... */ }
Front-End-Stil `` `CSS / Front-End-Blockstil / .WP-Block-Post-In-In-Kontent .wp-Block-Football-Rankings-Liga-Table { / ... Stil ... // }

Liga-Ständer { / Verwenden Sie ID Selector /

/ ... Stil ... // } `` <code>我们将此添加到 Wir fügen dies zu src/style.scss` hinzu, was für den Stil des Editors und Front-End verantwortlich ist. Ich kann die Demo -URL nicht teilen, da sie einen Editor -Zugriff erfordert, aber ich habe ein Video aufgezeichnet, mit dem Sie die Demo ansehen können:

Die Demo anzeigen Es ist sehr ordentlich, oder? Jetzt haben wir einen voll funktionsfähigen Block, der nicht nur am Frontend rendert, sondern auch API -Daten und im Block -Editor rendert - und es gibt eine Aktualisierung!

Wenn wir jedoch das Beste aus dem WordPress -Block -Editor nutzen möchten, sollten wir in Betracht ziehen, einige Block -UI -Elemente zu den Blockieren von Steuerelementen wie dem Festlegen von Farben, Typografie und Abstand abzubilden. Dies ist ein guter nächster Schritt auf der Block Development Learning Journey.

Das obige ist der detaillierte Inhalt vonRendern externer API -Daten in WordPress -Blöcken am hinteren Ende. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
So viele FarblinksSo viele FarblinksApr 13, 2025 am 11:36 AM

Es gab in letzter Zeit eine Reihe von Werkzeugen, Artikeln und Ressourcen über Farbe. Bitte erlauben Sie mir, ein paar Registerkarten zu schließen, indem Sie sie hier für Ihren Vergnügen zusammenrunden.

Wie automatische Margen in Flexbox funktionierenWie automatische Margen in Flexbox funktionierenApr 13, 2025 am 11:35 AM

Robin hat dies schon einmal abgedeckt, aber ich habe in den letzten Wochen einige Verwirrung darüber gehört und gesehen, wie eine andere Person einen Stich gemacht hat, um es zu erklären, und ich wollte

Bewegliche Regenbogen unterstreichtBewegliche Regenbogen unterstreichtApr 13, 2025 am 11:27 AM

Ich liebe das Design der Sandwich -Site. Unter vielen schönen Merkmalen befinden sich diese Schlagzeilen mit Regenbogenuntergründen, die sich beim Scrollen bewegen. Es ist nicht

Neues Jahr, neuer Job? Lassen Sie einen netzbetriebenen Lebenslauf machen!Neues Jahr, neuer Job? Lassen Sie einen netzbetriebenen Lebenslauf machen!Apr 13, 2025 am 11:26 AM

Viele beliebte Lebenslaufdesigns machen den verfügbaren Seitenraum optimal, indem sie Abschnitte in Gitterform legen. Verwenden wir ein CSS -Netz, um ein Layout zu erstellen, das

Eine Möglichkeit, die Benutzer aus der Gewohnheit herauszubrechen, zu viel neu zu ladenEine Möglichkeit, die Benutzer aus der Gewohnheit herauszubrechen, zu viel neu zu ladenApr 13, 2025 am 11:25 AM

Seiten -Nachladen sind eine Sache. Manchmal aktualisieren wir eine Seite, wenn wir der Meinung sind, dass sie nicht mehr reagiert, oder glauben, dass neue Inhalte verfügbar sind. Manchmal sind wir nur sauer auf

Domänengetriebenes Design mit ReactDomänengetriebenes Design mit ReactApr 13, 2025 am 11:22 AM

Es gibt nur sehr wenige Anleitungen zur Organisation von Front-End-Anwendungen in der Welt der Reaktionen. (Bewegen Sie einfach Dateien um, bis es sich „richtig anfühlt“, lol). Die Wahrheit

Erkennen inaktiver BenutzerErkennen inaktiver BenutzerApr 13, 2025 am 11:08 AM

Meistens kümmert es Sie sich nicht wirklich darum, ob ein Benutzer aktiv mit Ihrer Anwendung inaktiv oder vorübergehend inaktiv ist. Inaktiv, was vielleicht sie vielleicht

Wufoo ZapierWufoo ZapierApr 13, 2025 am 11:02 AM

Wufoo war immer großartig bei Integrationen. Sie haben Integrationen mit bestimmten Apps wie Kampagnenmonitor, MailChimp und Typkit, aber auch sie

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor