Mastering WordPress-metadata arrays begrijpen en gebruiken

In het eerste deel van deze serie hebben we besproken met welke WordPress-metadata, hoe deze kan worden opgehaald, en de verschillende gegevenstypen (zoals objecten of matrices) waarin deze kan worden geretourneerd. Nu is het tijd om meer te weten te komen over de verschillende soorten arrays.

Wanneer u een array handmatig schrijft, weet u wat de structuur is en hoe de naam van elke index is. Maar wanneer u arrays aan het bouwen bent door een database te bevragen, moet u wat detectivewerkzaamheden uitvoeren om de structuur van de geretourneerde gegevens en de namen van de indexen te bepalen.

Array Types

Voordat u daadwerkelijk springt in de verschillende soorten arrays die beschikbaar zijn, is het belangrijk om te begrijpen dat een PHP-array een variabele is die meer dan één stuk gegevens bevat.

Associatieve versus geïndexeerde arrays

Het eenvoudigste voorbeeld van een array is een door komma's gescheiden lijst met waarden, binnenin de functie array (), zoals dit:

 $ heros = array ('Luke', 'Leia', 'Han');

PHP indexeert automatisch arrays die in door komma's gescheiden lijsten zijn gemaakt, en wijst elk item een ​​numerieke index toe, beginnend bij nul. Dit betekent dat we de waarde van het tweede item 'Leia' van de $ helden array door de index op te geven 1.

Hier is hoe dat eruit zou zien:

 $ heroes = array ('Luke', 'Leia', 'Han'); echo $ heroes [1];

Bekijk voor een praktisch WordPress-voorbeeld de functie wp_get_attachment_image_src () die een geïndexeerde reeks informatie over een afbeelding retourneert.

We kunnen de URL, breedte en hoogte van een afbeelding ophalen met behulp van de numerieke indexen van de array die deze functie retourneert (merk op dat de '7' die wordt doorgegeven aan de functie verwijst naar de bijlage-ID, en in dit geval is het willekeurig voor doeleinden ons voorbeeld):

 $ img = wp_get_attachment_image_src (7); echo ' ';

Natuurlijk kan het bijhouden van de indexnummers in arrays verwarrend worden, daarom kunnen we met behulp van PHP associatieve arrays maken. Terugkeren naar onze $ helden We kunnen bijvoorbeeld elk item in onze array een naam geven:

 $ heroes = array ('unlikely_hero' => 'Luke', 'badass_princess' => 'Leia', 'lovable_rouge' => 'Han',);

We noemen deze namen sleutels. In deze array zouden we zeggen dat de sleutel 'onwaarschijnlijk_held' de waarde 'Luke' heeft. We kunnen de waarde van deze sleutel krijgen door deze naast de variabele tussen haakjes te plaatsen. Bijvoorbeeld:

 echo $ hereos ['unlikely_hero'];

Multi-Dimensional Arrays

Tot nu toe hebben we gekeken naar arrays die in wezen een lijst met items zijn, maar arrays kunnen ook uit andere arrays bestaan. We noemen deze multi-dimensionale arrays. Bij het maken van een multidimensionale array hebben we in feite een lijst met lijsten, waarbij elke index of sleutel in onze array wordt gedefinieerd door een andere array.

Bijvoorbeeld:

 $ heroes => array ('Luke' => array ('full_name' => 'Luke Skywalker', 'home_planet' => 'Tatooine', 'trope' => 'Unlikely Hero',), 'Leia' => array ('volledige_naam' => 'Leia Organa', 'home_planet' => 'Alderaan', 'trope' => 'Badass Princess',), 'Han' => array ('volledige naam' => 'Han Solo', ' home_planet '=>' Corell ',' trope '=>' Lovable Rouge ',),);

Dit soort array is erg handig omdat het ons in staat stelt om er doorheen te lopen, onze markup eenmaal op te schrijven en PHP zo vaak mogelijk opnieuw te laten herhalen.

Hulpmiddelen voor recherchewerk

Zoals ik aan het begin van dit artikel al zei, kan het werken met metagegevens vaak gepaard gaan met speurwerk om de structuur van de array te ontdekken. Zoals elke detective moet je ervoor zorgen dat je over de juiste tools voor de klus beschikt.

Amateur-ontwikkelaars passen hun themabestanden aan om tijdelijk waarden van arrays uit te voeren. Maar als u snel en efficiënt wilt werken, doet u het op de professionele manier - met debug-console.

Amateur-ontwikkelaars passen hun themabestanden aan om tijdelijk waarden van arrays uit te voeren. Maar als u snel en efficiënt wilt werken, doet u het op de professionele manier - met debug-console.

Wat is de foutopsporingsconsole?

Debug Console is een van de vele add-ons voor de plug-in Debug Bar die geen WordPress-ontwikkelaar zonder zou moeten hebben. Als u de Debug Bar nog niet in uw ontwikkelomgeving hebt geïnstalleerd, moet u dit zo snel mogelijk doen.

Zodra u deze twee plug-ins hebt geïnstalleerd, hebt u toegang tot een console via de beheerbalk, waar u PHP-code kunt uitvoeren. In plaats van een themabestand te wijzigen, op te slaan en te vernieuwen, kunt u nu simpelweg met code experimenteren in de browser.

Klik gewoon op 'Uitvoeren' en bekijk de resultaten onder aan het scherm. Het beste deel is dat eventuele fouten die u genereert, worden weergegeven in het vak met resultaten, niet op de voorkant van uw site. Fatale fouten doorbreken de debug-console, niet uw site.

Ik heb nog maar net het oppervlak gekrabbeld van wat Debug Bar kan doen, trouwens. Ook zijn zowel de Debug Bar als de Debug Console, evenals een heleboel andere coole hulpprogramma's opgenomen in de Developer Plugin, die ik ten zeerste aanbeveel. Naarmate je leert werken met metagegevens, kun je de plug-in Debug Bar Post Meta ook heel handig vinden.

var_dump vs print_r

Nu je een plek hebt om te testen, hoe onderzoek je de interieurs van een array. Voor dit werk geeft PHP ons twee hulpprogramma-functies die we nooit zouden gebruiken voor het maken van front-end-uitvoer, maar die perfect zijn voor diagnostisch werk-var_dump () en print_r ().

Beide functies nemen een variabele met daarin een array als invoer en voeren de inhoud uit die we kunnen onderzoeken. var_dump () bevat meer informatie, zoals het gegevenstype (string, boolean, integer, etc.) en de lengte van de gegevens, terwijl print_r () is ontworpen om menselijk leesbaarder te zijn en slaat deze aanvullende informatie over.

Var_dump gebruiken om een ​​index of sleutel te vinden

Hier is een screenshot van een var_dump van de metadata voor een bericht. Het laat zien hoe ik naar slechts één veld heb geboord. Mijn doel was om de waarde te krijgen van het meta-titelveld dat is aangemaakt door de plug-in WordPress SEO by Yoast.

Zoals je kunt zien aan de var_dump, die ik heb gegenereerd met alle meta-velden voor post ID # 1 met get_post_meta (1); Ik werkte met een associatieve, multidimensionale array, die een geïndexeerde array met slechts één index bevatte. Door de var_dump te onderzoeken, ontdekte ik dat de sleutel die ik nodig had '_yoast_wpseo_title' was en dat de feitelijke informatie die ik nodig had in de eerste index zat. Om toegang te krijgen heb ik de sleutel '_yoast_wpseo_title' in zijn eigen variabele gezet en vervolgens de eerste index als volgt herhaald:

 $ meta = get_post_meta (1); $ seo_title = $ meta ['_ yoast_wpseo_title']; echo '
SEO TITLE: '. $ seo_title [0]. '
';

Dit is een goed voorbeeld voor het illustreren van de strategie om de noodzakelijke sleutel te vinden, maar is niet de meest efficiënte manier om de informatie te krijgen, als je eenmaal de sleutel kent. Dus, nadat ik het recherchewerk had gedaan om de juiste sleutel te vinden, zou ik de sleutel direct in de oproep opgeven get_post_meta (). Wanneer we slechts één sleutel nodig hebben, kunt u deze rechtstreeks in het tweede argument van get_post_meta ().

Het is belangrijk om dat in gedachten te houden get_post_meta (1, '_yoast_wpseo_title'); zal niet de waarde teruggeven die we nodig hebben, maar in plaats daarvan een array retourneren. Door true toe te voegen voor het derde argument 'single' kunnen we alleen de eerste index krijgen, en dat is wat we nodig hebben.

Dus, om direct de SEO-titel weer te geven, alles op één regel zouden we dit moeten doen:

 get_post_meta (1, '_yoast_wpseo_title', true);

Get_user_meta () gebruiken

Tot nu toe in deze serie heb ik je laten zien hoe je met de kunt werken wp_postmeta tabel, die alle aangepaste velden bevat die aan een berichttype zijn toegevoegd.

Gebruikers kunnen ook aangepaste velden hebben. Metadata van gebruikers, extra velden toegevoegd aan gebruikersprofielen werken op dezelfde manier als post-metadata, maar worden opgeslagen in de wp_usermeta tafel. Wanneer u werkt met metadata van gebruikers, in plaats van get_post_meta (), we gebruiken get_user_meta ().

Deze twee functies werken identiek, ze krijgen alleen hun gegevens van twee verschillende tabellen in de database.

Hier is een voorbeeld met get_user_meta () om een ​​aangepaste afbeelding als een link naar de berichten van een auteur uit te voeren:

 $ users = array (55, 89, 144, 233, 377); foreach ($ gebruikers als $ gebruiker) $ link = get_author_posts_url ($ user); $ img = get_user_meta ($ user, 'link_img',; echo '';  // einde voor elke lus

Volgende…

In de twee delen van deze serie hebben we de verschillende typen metadata onderzocht, hoe ze zijn opgeslagen en hoe we ze kunnen ophalen. Verder hebben we gekeken naar de twee soorten arrays die PHP biedt, en hoe dit overeenkomt met metagegevens die zijn gekoppeld aan berichten en gebruikers.

In het volgende deel van de serie bekijken we precies hoe we elk type gegevens kunnen herhalen, zodat we de kracht en flexibiliteit hebben om de uitvoer voor onze sjablonen aan te passen..