I den första delen av denna serie täckte vi vilka WordPress-metadata som är, hur det kan hämtas och de olika datatyperna (som objekt eller arrayer) där det kan returneras. Nu är det dags att lära sig om olika typer av arrays.
När du skriver en matris manuellt vet du vad dess struktur är en vad namnet på varje index är. Men när du bygger arrays genom att fråga en databas, kommer du behöva göra vissa detektivarbete för att bestämma strukturen hos de data som returneras och namnen på indexen.
Innan du faktiskt hoppar in i olika typer av arrays som är tillgängliga, är det viktigt att förstå att en PHP-array är en variabel som innehåller mer än en bit data.
Det enklaste exemplet på en array är en kommaseparerad lista över värden, inuti funktionen array ()
, så här:
$ heros = array ('Luke', 'Leia', 'Han');
PHP indexerar automatiskt arrayer skapade i kommaseparerade listor, vilket tilldelar varje objekt ett numeriskt index, börjar vid noll. Det betyder att vi kunde hämta värdet på det andra objektet "Leia" av $ hjältar
array genom att ange index 1.
Här är det som skulle se ut:
$ hjältar = array ('Luke', 'Leia', 'Han'); echo $ heroes [1];
För ett praktiskt WordPress-exempel, ta en titt på funktionen wp_get_attachment_image_src () som returnerar en indexerad uppsättning information om en bild.
Vi kan få webbadressen, bredden och höjden av en bild med hjälp av de numeriska indexerna från matrisen som denna funktion returnerar (notera att "7" som skickas till funktionen hänvisar till bifogade ID, och i det här fallet är det godtyckligt för syftet med vårt exempel):
$ img = wp_get_attachment_image_src (7); eko " ';
Naturligtvis kan hålla reda på indexnumren i arrayer bli förvirrande, vilket gör att PHP tillåter oss att skapa associativa arrayer. Återvänder till vårt $ hjältar
Exempelvis kan vi ge varje objekt i vårt sortiment ett namn:
$ hjältar = array ('unlikely_hero' => 'Luke', 'badass_princess' => 'Leia', 'lovable_rouge' => 'Han');
Vi kallar dessa namn nycklar. I denna array skulle vi säga att nyckeln "osannolikt" har värdet "Luke". Vi kan få värdet av den här nyckeln genom att placera den i parentes bredvid variabeln. Till exempel:
echo $ hereos ['unlikely_hero'];
Hittills har vi tittat på arrays som är väsentligen en lista över objekt, men arrays kan också bestå av andra arrays. Vi kallar dessa multidimensionella arrays. När vi skapar en mångdimensionell grupp, har vi i huvudsak en lista över listor där varje index eller nyckel i vår array definieras av en annan grupp.
Till exempel:
$ heroes => array ('Luke' => array ('full_name' => 'Luke Skywalker', 'home_planet' => 'Tatooine', 'trope' => 'osannolik hjälte'), 'Leia' => array ('full_name' => 'Leia Organa', 'home_planet' => 'Alderaan', 'trope' => 'Badass Prinsessan'), 'Han' => array ('full_name' => 'Han Solo' home_planet '=>' Corell ',' trope '=>' Lovable Rouge ',),);
Denna typ av array är väldigt användbar eftersom det tillåter oss att gå igenom det, skriva vår markering en gång och låta PHP iterera över det så många gånger som möjligt.
Som jag sa i början av denna artikel kan arbetet med metadata ofta involvera vissa detektivarbete för att upptäcka arrayens struktur. Precis som någon detektiv måste du se till att du har rätt verktyg för jobbet.
Amatörutvecklare ändrar sina temafiler för att mata ut värden av arrays tillfälligt. Men om du vill arbeta snabbt och effektivt kommer du att göra det på ett sätt - med debug-konsol.
Amatörutvecklare ändrar sina temafiler för att mata ut värden av arrays tillfälligt. Men om du vill arbeta snabbt och effektivt kommer du att göra det på ett sätt - med debug-konsol.
Debug Console är en av flera tillägg för Debug Bar-plugin som ingen WordPress-utvecklare borde vara utan. Om du inte redan har Debug Bar installerad i din utvecklingsmiljö måste du göra så snart som möjligt.
När du har installerat dessa två plugins kommer du kunna komma åt en konsol från adminfältet, där du kan köra PHP-kod. Nu kan du istället för att ändra en temafil, spara och uppfriskande enkelt experimentera med kod direkt i webbläsaren.
Klicka bara på "kör" och se resultaten längst ner på skärmen. Det bästa är att eventuella fel som du genererar kommer att visas i resultatrutan, inte på din webbplatsens främre ände. Felaktiga fel bryter debug-konsolen, inte din webbplats.
Jag har just bara repat ytan på vad Debug Bar kan göra, förresten. Också, både Debug Bar och Debug Console, liksom ett ton andra coola verktyg ingår i utvecklaren Plugin, som jag starkt rekommenderar. När du lär dig att arbeta med metadata kan du också hitta plugin Debug Bar Post Meta ganska bra också.
Nu när du har en plats att göra din testning, hur utforskar du interiören i en array. För detta arbete ger PHP oss två verktygsfunktioner som vi aldrig skulle använda för att skapa frontend-utgång, men är perfekta för diagnostiskt arbete-var_dump ()
och print_r ()
.
Båda dessa funktioner tar en variabel som innehåller en array som en inmatning och utmatar dess innehåll för att vi ska undersöka. var_dump ()
innehåller mer information som datatyp (sträng, booleskt, heltal, etc.) och längden på data, medan print_r ()
är utformad för att vara mer mänsklig läsbar och hoppar över denna ytterligare information.
Här är en skärmdump av en var_dump av metadata för ett inlägg. Det visar hur jag borrade ner till bara ett fält. Mitt mål var att få värdet av metatitelfältet skapat av WordPress SEO med Yoast-plugin.
Som du kan se från var_dumpen, genererade jag från alla metafält för post ID # 1 med get_post_meta (1);
Jag arbetade med en associativ, mångdimensionell array, som innehöll en indexerad array med endast ett index. Genom att undersöka var_dumpen fann jag att nyckeln jag behövde var "_yoast_wpseo_title" och att den faktiska informationen jag behövde var i det första indexet. För att komma åt det sätter jag nyckeln '_yoast_wpseo_title' i sin egen variabel och sedan echoed det första indexet så här:
$ meta = get_post_meta (1); $ seo_title = $ meta ['_ yoast_wpseo_title']; eko "SEO TITLE: '. $ seo_title [0]. '';
Detta är ett bra exempel för att illustrera strategin för att hitta den nödvändiga nyckeln, men det är inte det mest effektiva sättet att få informationen, när du väl vet nyckeln. Så efter att ha gjort detektiva arbetet för att hitta rätt nyckel skulle jag ange nyckeln direkt i samtalet till get_post_meta ()
. När vi bara behöver en nyckel kan du ange det direkt i det andra argumentet för get_post_meta ()
.
Det är viktigt att komma ihåg det get_post_meta (1, '_yoast_wpseo_title');
kommer inte att returnera det värde vi behöver, utan returnerar en array. Genom att lägga till sant för det tredje argumentet "singel" kan vi bara få det första indexet, vilket är vad vi behöver.
Så, för att direkt echo SEO-titeln, skulle vi alla behöva göra det här:
get_post_meta (1, '_yoast_wpseo_title', true);
Hittills i denna serie har jag visat dig hur man arbetar med wp_postmeta
tabellen, som innehåller alla de anpassade fälten till en posttyp.
Användare kan också ha egna fält. Användar-metadata, extrafält som läggs till användarprofiler fungerar på ungefär samma sätt som postmetadata, men lagras i wp_usermeta
tabell. När du arbetar med metadata för användaren, istället för get_post_meta ()
, vi använder get_user_meta ()
.
Dessa två funktioner fungerar identiskt, de får bara sina data från två olika tabeller i databasen.
Här är ett exempel med get_user_meta ()
att utföra en anpassad bild som en länk till en författares inlägg:
$ users = array (55, 89, 144, 233, 377); foreach ($ användare som $ användare) $ link = get_author_posts_url ($ user); $ img = get_user_meta ($ user, 'link_img',; echo ''; // avsluta slingan
I de två delarna i denna serie har vi granskat olika typer av metadata, hur de lagras och hur vi kan hämta dem. Dessutom har vi tittat på de två typerna av arrayer som PHP erbjuder, och hur detta motsvarar metadata som är förknippade med inlägg och användare.
I nästa del av serien tittar vi på exakt hur vi kan iterera genom varje typ av data så att vi har kraft och flexibilitet för att anpassa utdata för våra mallar.