Herbruikbare aangepaste metaboxen Deel 4 gebruik van de gegevens

In deel 1, deel 2 en deel 3 van onze zelfstudieserie met metabox-dozen leerden we hoe we een herbruikbare metabox kunnen maken die alle veldinformatie krijgt van een eenvoudig te lezen, eenvoudig te dupliceren array. Veel van de gegevens zijn eenvoudig te gebruiken door alleen het metaveld in uw sjabloon of door een functie te herhalen, maar sommige velden zijn complexer en vereisen een beetje meer finesse om correct te gebruiken. Deze tutorial geeft je een basisidee van hoe je deze gegevens kunt gebruiken en kan op talloze manieren worden uitgelegd.


De gegevens ophalen

WordPress biedt meerdere manieren om post-metadata te krijgen.

Voer alle gegevens tegelijk uit

De eenvoudigste manier om de gegevens weer te geven, is met the_meta () functie. Je kunt dit direct in je plaatsen single.php sjabloon, maar het geeft u niet de resultaten waar u waarschijnlijk achteraan gaat. Het is een zeer letterlijke uitvoer van de gegevens in een niet-geordende lijst voorafgegaan door de sleutel van elk veld zoals weergegeven in de afbeelding.

Krijg een enkel veld

De meest gebruikelijke manier om gegevens in een berichtmeta-veld te bewaren, is met de get_post_meta () functie. Dit is een eenvoudige manier om een ​​specifiek veld te targeten en op te slaan in een variabele die later kan worden gebruikt.

 $ Custom_text = get_post_meta ($ post-> ID, 'custom_text', true);

Gebruik deze code binnen de enkelvoudige berichtlus om de tekst "Enkele tekst in een basistekstinvoer" in de variabele in te voegen $ custom_text welke vervolgens kan worden geëchood of gefilterd, of wat dan ook dat je zou willen doen met de string. Als u slechts een paar velden bestrijkt, is dit waarschijnlijk de juiste oplossing, maar in ons voorbeeld werken we met elf verschillende velden. Als je ze allemaal afzonderlijk oproept met deze functie, zou je code onnodig opzwellen, omdat er een manier is om alle gegevens tegelijk te krijgen.

Krijg alle gegevens tegelijk

Mijn favoriete methode wanneer ik met zoveel velden werk, is het gebruik van de get_post_custom () functie. Met deze functie kunnen we alle aangepaste meta-meta-velden in één array opslaan en vervolgens de gewenste gegevens ophalen met de array-sleutel.

$ post_meta_data = get_post_custom ($ post-> ID); geeft ons een array die er als volgt uitziet:

 Array ([custom_text] => Array ([0] => Enkele tekst in een standaardtekstinvoer) [custom_textarea] => Array ([0] => Een alinea of ​​twee uit een tekstgebied. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tristique quam mi. Sed eget ligula sit amet ante dapibus tristique. Mauris velim mauris, vitae mattis tortor. Praesent bij adipiscing massa. Fusce quis eros vel sem pharetra consequent imperdiet ut est.) [custom_checkbox] => Array ([ 0] => aan) [custom_select] => Array ([0] => één) [custom_radio] => Array ([0] => twee) [custom_checkbox_group] => Array ([0] => a: 2: i: 0; s: 3: "one"; i: 1; s: 5: "three";) [custom_post_id] => Array ([0] => 109) [custom_date] => Array ([0 ] => 05/25/2012) [custom_slider] => Array ([0] => 15) [custom_image] => Array ([0] => 413) [custom_repeatable] => Array ([0] => a : 3: i: 0; s: 22: "tekst uit een herhaalbare"; i: 1; s: 27: "meer tekst uit een herhaalbare"; i: 2; s: 33: "herhaalbare tekstvelden zijn geweldig! ";))

Zoals u kunt zien in deze array, slaat WordPress elk veld op als een array omdat het mogelijk is om meer dan één waarde voor hetzelfde veld te hebben. U zult waarschijnlijk ook opmerken dat een paar van de velden zijn geserialiseerd. Laten we verder gaan met het verwerken van de gegevens uit elk veld en bespreken hoe dit te verhelpen.


Eenvoudige invoervelden

De tekst- en tekstvelden zijn vrij eenvoudig om mee om te gaan. Je kunt ze echoën met een van de volgende voorbeelden:

 echo $ post_meta_data ['custom_text'] [0]; echo apply_filters ('the_content', $ post_meta_data ['custom_textarea'] [0]); $ custom_checkox = $ post_meta_data ['custom_checkbox'] [0]; if ($ custom_checkbox == 'on') do_stuff (); 

De eerste regel voert gewoon de string as-is uit, en de tweede regel converteert de regeleinden naar alinea's met WordPress ' de inhoud filter. U kunt dezelfde methoden ook gebruiken voor selecties, radio-, datum- en schuifregio's.

De laatste regel laat zien hoe je kunt testen om te zien of een selectievakje is geselecteerd of niet. Als dat zo is, kunt u verschillende functies of een aantal dingen uitvoeren.


Geserialiseerde gegevens

Onze selectievakegeldvelden en herhaalbare velden zijn arrays die serieel in de database worden opgeslagen. Voordat we deze gegevens kunnen uitvoeren, moeten we deze undenialiseren.

 $ custom_checkbox_group = unserialize ($ post_meta_data ['custom_checkbox_group'] [0]); $ custom_repeatable = unserialize ($ post_meta_data ['custom_repeatable'] [0]);

De unserialize () function is een eenvoudige PHP-functie die onze gegevens omzet in een array die gemakkelijker te gebruiken is. De bovenstaande code geeft me twee arrays die er als volgt uitzien:

 Array ([0] => één [1] => drie) Array ([0] => tekst van een herhaalbare [1] => meer tekst uit een herhaalbare [2] => herhaalbare tekstvelden zijn geweldig!)

Nu kan ik de arrays doorlopen, maar ik wil ze gebruiken in mijn uitvoer. Het is belangrijk om op te merken dat in het herhaalbare veld, als je het sorteerbaar maakt zoals ons voorbeeld in deel 3 van onze aangepaste metabox-sjabloon zelfstudie, de sleutels in de array automatisch worden opgeslagen in de volgorde 0, 1, 2, 3 , enz. en niet in de volgorde waarin ze oorspronkelijk zijn ingevoerd voordat ze worden gesorteerd.

 echo '
    '; foreach ($ custom_repeatable als $ string) echo '& ltli>'. $ string. ''; echo '
';

In dit voorbeeld wordt een niet-geordende lijst van elke reeks opgeslagen die is opgeslagen in de $ custom_repeatable rangschikking.


Gespecialiseerde gegevens

Voor onze velden Postlijst en Afbeelding hebben we een ID opgeslagen. Er kunnen enkele zeer zeldzame gevallen zijn waarin u alleen de ID wilt uitvoeren, maar hoogstwaarschijnlijk wilt u de ID gebruiken om meer informatie te krijgen.

 $ custom_post_id = $ post_meta_data ['custom_post_id'] [0]; echo '' .get_the_title ($ custom_post_id). ''; $ custom_image = $ post_meta_data ['custom_image'] [0]; echo wp_get_attachment_image ($ custom_image, 'thumbnail');

Conclusie

Deze zelfstudie laat de meest eenvoudige manieren zien waarop u de gegevens kunt gebruiken die we hebben opgeslagen met onze herbruikbare aangepaste metaboxen. Het kunnen opslaan van extra gegevens en deze gebruiken in thema's en plug-ins opent een hele nieuwe wereld van mogelijkheden met WordPress. Waar gebruik je het voor??