Hoe te werken met WordPress Metagegevens van reacties

In deze reeks hebben we gekeken naar een aantal metadata-API's die worden aangeboden door WordPress. Dit omvat de Post Meta API en de User Meta API. Vandaag gaan we de serie rond maken door te kijken naar de WordPress Comment Meta API.

Merk op dat dit de laatste metadata-API is die WordPress aanbiedt. Vanaf WordPress 4.4 is er nu een Term Metadata API. Om het volledig te begrijpen, is het belangrijk om taxonomieën, termen en hun relaties te begrijpen in de context van WordPress. In een komende serie zal ik precies dat behandelen.

Maar vandaag gaan we ons richten op het beheren van metagegevens die zijn gekoppeld aan opmerkingen. Als je tot nu toe niets anders in deze serie hebt gelezen, raad ik aan te bekijken wat we tot nu toe hebben besproken.

Als je helemaal bent ingehaald, laten we dan beginnen.

De WordPress Comment Meta API

In deze hele reeks hebben we de WordPress-definitie van metadata gebruikt als onze basis om te begrijpen hoe deze informatie wordt weergegeven in de context van onze omgeving.

In het bijzonder hebben we gezegd:

Metagegevens worden afgehandeld met sleutel / waarde-paren. De sleutel is de naam van het meta-data-element. De waarde is de informatie die wordt weergegeven in de metadatatielijst voor elk afzonderlijk bericht waaraan de informatie is gekoppeld.

In overeenstemming met de rest van de inhoud die we in deze serie hebben gezien, geldt deze definitie ook voor de metagegevens van reacties, net als voor metadata en gebruikersmetadata.

Het voordeel hiervan is dat als je eenmaal de verschillende metadata-API's die we hebben behandeld hebt behandeld, er heel weinig verbazing zal zijn over hoe andere metadata-functionaliteit werkt. Afhankelijk van de API die u gebruikt, kunnen er een paar dingen verschillen, maar de kern van de functionaliteit zal hetzelfde zijn.

En zoals u zult zien, blijft dit het geval met de metagegevens-API voor reacties.

Werken met de API voor metagegevens van reacties

Net als bij de andere API's die we in deze serie hebben onderzocht, zijn er vier primaire functies die we gaan verkennen:

  • add_comment_meta
  • update_comment_meta
  • get_comment_meta
  • delete_comment_meta

Inmiddels weet u waarschijnlijk wat u kunt verwachten als het bijvoorbeeld gaat om de verschillen tussen het toevoegen van metagegevens voor reacties en het bijwerken van metagegevens van reacties. Of, laten we zeggen, werken met het verwijderen van metagegevens van reacties. 

Dat neemt niet weg dat het de moeite waard is om elk van deze API-functies gedetailleerd te onderzoeken, om er zeker van te zijn dat we alles hebben besproken wat er te weten valt wanneer met hen wordt gewerkt..

Voor de rest van dit artikel ga ik uit van het volgende:

  • U voert een lokale ontwikkelomgeving uit met een webserver, databaseserver en PHP.
  • U hebt een exemplaar van WordPress geïnstalleerd.
  • U hebt een kopie van tutsplus-metadata.php ingesteld in de directory van uw thema, en het is opgenomen in uw thema's functions.php het dossier.
  • U hebt uw IDE en database-front-end naar keuze direct beschikbaar.

Zoals ik in de vorige artikelen heb gebruikt, gebruik ik de volgende applicaties:

  • MAMP
  • Atoom
  • Sequel Pro
  • twentysixteen

Ten slotte worden alle metadata waarmee we werken opgeslagen in de wp_commentmeta databasetabel, dus alle screenshots die u van de database ziet, zullen van die specifieke tabel zijn.

In tegenstelling tot sommige van de andere metadatatabellen die we hebben gezien, is de wp_commentmeta tafel begint leeg (ervan uitgaande dat je werkt met een relatief frisse versie van WordPress).

Dit is goed want het geeft ons een schone lei, van soort, te gebruiken bij het onderzoeken van de verschillende API-functies. Merk op dat voor alle onderstaande voorbeelden, we ervoor zullen zorgen dat dit allemaal gebeurt op de Hallo Wereld! post. Dit bericht heeft de ID van 1. Als u een andere pagina wilt gebruiken, vervangt u eenvoudigweg 1 met de ID van de betreffende post.

Met dat alles op zijn plaats, laten we beginnen te kijken naar wat er beschikbaar is.

Commentaar Meta toevoegen

Om aan de slag te gaan met het toevoegen van metagegevens aan onze opmerkingen, is het belangrijk om de wp_comments tabel om te zien welke opmerkingen al bestaan. Als u met een nieuwe installatie van WordPress werkt, ziet u waarschijnlijk één record:

Dit is de standaardcommentaar die bij WordPress wordt geleverd en die het goed zal doen voor de voorbeelden die we zullen gebruiken. 

Als je daarentegen werkt met een database vol opmerkingen, geen probleem! Het enige dat u moet weten, is met welke opmerking u werkt (via de ID) en zorg ervoor dat u consistent bent met de code die we hieronder gebruiken.

Net als bij andere API's die we in deze serie hebben beoordeeld, bestaat de toevoeging van metagegevens aan opmerkingen in twee vormen: uniek en niet-uniek. We gaan beide bekijken.

Unieke metagegevens toevoegen

De add_comment_meta functie accepteert drie parameters en een optionele vierde parameter. Als je slaagt waar als de vierde parameter, worden de metagegevens alleen toegevoegd als de opgegeven meta-sleutel niet bestaat.

Heb je zin? Laten we kijken. Eerst stellen we een functie in die wat metagegevens zal toevoegen die zijn gekoppeld aan de eerste opmerking (maar doet dit alleen in het bericht met de ID van 1):

Merk op dat ik de echte parameter heb gepasseerd. Dus elke keer dat ik de pagina vernieuw, zal WordPress zien dat ik wil dat deze waarde uniek is, zodat er geen informatie meer wordt toegevoegd aan de databasetabel die is gekoppeld aan die metasleutel.

Niet-unieke metadata toevoegen

Als ik aan de andere kant meerdere waarden wil koppelen aan dezelfde meta-sleutel, zou ik de echte parameter verwijderen. Gebruik bijvoorbeeld de volgende code:

En ververs dan de pagina, zeg, drie keer. Als alles verloopt zoals verwacht, kunt u drie nieuwe records zien, die elk een willekeurig nummer bevatten zoals gegenereerd door de aanroep rand() in het meta-waardeargument.

Het is gemakkelijk genoeg om rechtdoor te blijven, toch? Als u een enkele waarde wilt die is gekoppeld aan een enkele sleutel, geeft u deze door waar als het optionele vierde argument; anders niets opgeven.

Commentaar Meta bijwerken

Als u bestaande metagegevens van reacties wilt bijwerken, is het belangrijk om de opmerking-ID, de meta-sleutel en de metawaarde te kennen. Dit betekent dat WordPress naar de opgegeven meta-sleutel kijkt en deze associeert met de opgegeven metawaarde.

Als de metawaarde bestaat, wordt deze overschreven. Als de metawaarde niet bestaat, wordt deze gemaakt. Bemerk in die laatste zin dat er een beetje functionaliteit is die u kunt gebruiken bij het toevoegen van metadata: als u een uniek stuk informatie wilt schrijven naar de tabel met metadata, kunt u deze gebruiken update_comment_meta en het zal het schrijven als een unieke waarde.

Dit kan resulteren in een beetje verwarrende code (omdat het leest alsof het iets bijwerkt dat niet bestaat), maar je kunt ook afdwingen dat er slechts één record bestaat voor de gegeven meta-sleutel..

Wat gebeurt er als er een metasleutel is gekoppeld aan verschillende metawaarden? In dat geval moet u weten welke waarde u wilt vervangen. In sommige gevallen weet u misschien precies wat dit is. In andere gevallen moet u mogelijk de informatie ophalen om deze te vinden (die we in de volgende sectie bespreken).

Ervan uitgaande dat we een van de records die we hebben gemaakt, zoals een van de willekeurige getallen die we in het bovenstaande voorbeeld hebben gezien, willen bijwerken, kunnen we dit opzoeken aan de hand van de front-end van de database:

En specificeer het als de vorige waarde in de volgende code:

Daarna kunnen we de pagina vernieuwen, een kijkje nemen in onze database en de wijziging bekijken. Merk op dat het werk dat we net hebben gedaan relevant is voor een ontwikkelomgeving en niet de manier is waarop je dit in productie gaat doen.

In plaats daarvan moet u mogelijk een query uitvoeren of een reeks waarden ophalen voordat u ze bijwerkt. Dit leidt ons naar het volgende onderwerp.

Reactie Meta ophalen

Wanneer u metagegevens voor reacties ophaalt, moet u beslissen of u een enkele waarde of alle waarden wilt ophalen die aan de opgegeven metasleutel zijn gekoppeld.

Misschien is een andere manier om hiernaar te kijken, als volgt: Als er meerdere stukken metadata zijn toegevoegd met dezelfde meta-sleutel (die we in de Unieke metagegevens toevoegen sectie hierboven), dan wilt u waarschijnlijk de hele verzameling records ophalen.

Als u aan de andere kant slechts één record wilt ophalen omdat u weet dat het uniek is of omdat het is gemaakt met de update_comment_meta functie, dan wilt u dat WordPress het in één waarde naar u terugstuurt.

De get_comment_meta functie vereist drie argumenten en een optionele vierde, afhankelijk van wat u wilt ophalen.

Een array ophalen

Stel dat u op zoek bent naar een verzameling van alle waarden die zijn gekoppeld aan een enkele meta-sleutel. Om dit te doen, zou u een oproep doen get_comment_meta en je zou de commentaar-ID en de meta-sleutel opgeven.

In de bovenstaande code drukken we het af naar de webbrowser, maar u zou met deze gegevens kunnen werken op elke manier die u wilt nadat u deze hebt opgehaald. Het belangrijkste om op te merken is echter dat de waarde als een array wordt geretourneerd.

Een enkele waarde ophalen

Als u een enkele waarde wilt ophalen, hoeft u alleen de opmerking-ID en de meta-sleutel in de. Op te geven get_comment_meta functie. Als je toevallig te maken hebt met een meta-sleutel met meerdere waarden, dan is de eerste waarde die is gemaakt, die welke wordt geretourneerd.

Laten we bijvoorbeeld zeggen dat er drie records zijn gekoppeld aan één meta-sleutel en dat u slechts één waarde wilt ophalen. Uw code ziet er als volgt uit: 

En de resulterende waarde zal er ongeveer zo uitzien:

string (9) "967432645"

Als alternatief, als u weet dat de gegevens uniek zijn, ziet de code er nog steeds hetzelfde uit, net als de geretourneerde waarde.

Het enige verschil is dat het eerste voorbeeld is opgehaald uit een set van meerdere records en het tweede voorbeeld is opgehaald uit een enkele record. Houd er ook rekening mee dat als u met een unieke waarde te maken krijgt, deze nog steeds als array wordt geretourneerd, maar als een enkele indexarray. 

Dit is belangrijk om op te merken, want als je van plan bent om een ​​vergelijking uit te voeren, vooral met een waarde van een ander type, zoals een geheel getal, dan zul je de waarde uit de array moeten halen en zul je waarschijnlijk willen typen conversie voordat u een vergelijking maakt.

Commentaar-meta verwijderen

Het verwijderen van metagegevens is een eenvoudige bewerking: hiervoor is de opmerking-ID, een meta-sleutel en een optionele metawaarde vereist.

Als u de metawaarde niet opgeeft, worden alle records die aan de meta-sleutel zijn gekoppeld, verwijderd. Als u echter de metawaarde opgeeft, wordt alleen die ene record verwijderd.

Unieke waarden verwijderen

Laten we voor het doel van dit voorbeeld aannemen dat we weten dat een enkel stuk metadata bestaat voor een bepaalde meta-sleutel. Dit betekent dat de meta-sleutel uniek moet zijn voor elke gebruiker, dus misschien gebruikt het iets als een uniek gegenereerde ID, een tijdstempel of iets dergelijks.

Om een ​​unieke waarde te verwijderen, geven we eenvoudig de opmerking-ID en de meta-sleutel door:

Voordat deze code wordt uitgevoerd, zou de database er ongeveer zo uit moeten zien:

Nadat u de pagina hebt vernieuwd, bekijkt u de database en ziet u dat de record is verwijderd en de database er als volgt uit moet zien:

We zullen het wat meer hebben over de te nemen voorzorgsmaatregelen bij het verwijderen van gegevens in de volgende sectie.

Niet-unieke waarden verwijderen

Laten we in andere situaties zeggen dat er meerdere waarden aan een enkele meta-sleutel zijn gekoppeld. We hebben dit meerdere malen gezien in dit artikel. Als u alle records wilt verwijderen die aan een meta-sleutel zijn gekoppeld, hoeft u geen metawaarde op te geven.

Dat wil zeggen, als u een commentaar-ID en meta-sleutel doorgeeft aan de delete_comment_meta functie, verwijdert het alle stukken metagegevens van reacties. Schrijf en voer de volgende code uit:

Ververs je pagina en bekijk de database. Als er geen problemen waren, zou uw database vrij moeten zijn van alle records die eerder die metasleutel hadden:

Maar vergeet niet dat het verwijderen van gegevens uit een database gevaarlijk kan zijn, vooral als u per ongeluk iets verwijdert dat u nooit wilde verwijderen. Daarom is het belangrijk om back-ups van uw database in productie-omgevingen te bewaren, zodat u deze altijd kunt herstellen als er iets misgaat.

Verder laat dit zien waarom het zo belangrijk is om een ​​lokale ontwikkelomgeving en een testomgeving voor testen te hebben voordat de code wordt geïmplementeerd in een productieomgeving.

De volledige broncode

Zoals in deze hele reeks is verstrekt, hier is een kopie van alle broncode die we in dit artikel hebben behandeld. Het is volledig gedocumenteerd en bevat opmerkingen die niet zijn weergegeven in sommige van de bovenstaande secties.

Merk op dat als je dit opneemt met de code van de rest van de artikelen in de serie, je voorzichtig moet zijn. Omdat alles met dezelfde haak wordt geregistreerd, kun je rare resultaten behalen.

Om dit te bestrijden, beveel ik een van de volgende twee scenario's aan:

  1. Maak drie afzonderlijke bestanden: één voor elk van de typen metadata-API's die we hebben onderzocht.
  2. Reageer op add_filter oproepen, behalve degene waarmee u momenteel werkt.

Elk van deze zal het gemakkelijker maken om te werken met alle code die we tot nu toe hebben behandeld.

Conclusie

Of u nu werkt met een metadata-API of een van de andere API's, elke WordPress-ontwikkelaar moet altijd snel toegang hebben tot de WordPress Codex om snel te onderzoeken welke API's beschikbaar zijn en hoe deze moeten worden gebruikt.

Terwijl we deze serie hebben doorlopen, zou u moeten zien hoe de API die is ontworpen met betrekking tot metadata consistent is. Dit zorgt voor een eenvoudig te gebruiken, krachtige API om enkele van de kern WordPress-functies uit te breiden.

Bovendien heb ik gezegd dat er een andere metadata-API is die is geïntroduceerd in WordPress 4.4. Ik ben van plan om dat in een komende serie te behandelen, maar het vereist een onderzoek van enkele van de andere functies die daarop zijn gebaseerd. 

Voor nu hebben we veel materiaal behandeld om je bestaande WordPress-vaardigheden te verbeteren. Tot het volgende artikel onthoud dat al mijn cursussen en tutorials beschikbaar zijn op mijn profielpagina en dat u meer artikelen over WordPress en WordPress-ontwikkeling kunt lezen op mijn blog. 

WordPress heeft een actieve economie. Er zijn thema's, plug-ins, bibliotheken en vele andere producten die u helpen uw site en project uit te bouwen. De open source aard van het platform maakt het ook een geweldige optie van waaruit je je programmeervaardigheden kunt verbeteren. Hoe het ook zij, u kunt zien wat we allemaal beschikbaar hebben op de Envato Marketplace.

Je kunt me ook op Twitter volgen op @tommcfarlin, waar ik het heb over verschillende softwareontwikkelingspraktijken, waarvan er vele relevant zijn voor webontwikkeling en waarvan er veel specifiek op WordPress zijn gericht.

Zoals met al mijn artikelen, aarzel dan niet om vragen of opmerkingen achter te laten in de onderstaande feed, en ik zal ernaar streven om op elk van hen te reageren.

Middelen

  • Aangepaste velden
  • add_comment_meta
  • update_comment_meta
  • get_comment_meta
  • delete_comment_meta
  • rand
  • echo
  • var_dump