Stevige WordPress 3.0-thema's met aangepaste berichttypen

De WordPress-gemeenschap bruist van opwinding over de binnenkort te verschijnen WordPress 3.0. WordPress 3.0 heeft nu in Beta 2 nu een boel spannende nieuwe functies, zoals een nieuw standaardthema en beter menubeheer. Misschien wel de meest opwindende van deze functies zijn aangepaste berichttypen. In deze zelfstudie zullen we praten over het maken en gebruiken van aangepaste berichttypen om een ​​rotsvast thema te maken.


Wat is een aangepast berichttype??

Nou, volgens de WordPress Codex:

"Berichttype verwijst naar de verschillende gestructureerde gegevens die worden bewaard in de WordPress-berichtentabel. Met aangepaste berichttypen kunnen gebruikers eenvoudig dingen maken en beheren zoals portfolio's, projecten, videobibliotheken, podcasts, offertes, chats en wat een gebruiker of ontwikkelaar dan ook kan me voorstellen. '

In wezen kunnen ontwikkelaars hiermee nieuwe soorten berichten maken die lijken op de post- en paginatypen, die allemaal in de hoofdnavigatie in de WordPress-beheerder worden weergegeven. Dit heeft verschillende voordelen; Het belangrijkste is dat we geen plug-ins meer nodig hebben om speciale typen te maken, we kunnen een thema bouwen dat minder afhankelijk is van aangepaste velden (zoals we die kennen) en ze maken het beheren van de site eenvoudiger voor klanten en niet-technische gebruikers. In plaats van hen te vertellen een "bericht" te maken en ervoor te zorgen dat u allerlei aangepaste velden invult voor bijvoorbeeld muziek, kunnen we hen gewoon vertellen om op "Muziek" te klikken om een ​​nieuw muziekbericht toe te voegen.

Laten we beginnen!

In deze tutorial zullen we:

  • Maak een aangepast berichttype voor producten met onze eigen invoer
  • Maak een aangepaste "taxonomie" voor het type.
  • Maak een themasjabloon die bij het nieuwe type past.

Registreer het aangepaste berichttype

Dit alles gebeurt vanuit het function.php-bestand van ons thema. Ik ben bezig met het aanpassen van het standaard 3.0-thema, TwentyTen.

Het eerste dat we zullen doen is WordPress vertellen dat we een nieuw aangepast type willen registreren. Hier is de code:

 add_action ('init', 'product_register'); function product_register () $ args = array ('label' => __ ('Products'), 'singular_label' => __ ('Product'), 'public' => true, 'show_ui' => true, 'capability_type '=>' post ',' hierarchical '=> false,' rewrite '=> true,' supports '=> array (' title ',' editor ',' thumbnail ')); register_post_type ('product', $ args); 

De eerste regel is een haak om WordPress te vertellen dat we de functie willen aanroepen product_register () tijdens initialisatie. Het is in die functie dat we het nieuwe berichttype registreren.

De functie register_post_type () accepteert twee argumenten: de naam die we ons berichttype willen geven en een lijst met argumenten die zijn gebruikt om dat berichttype te maken, dat we in een array plaatsen genaamd $ args. Je kunt precies lezen wat alle argumenten hier zijn, maar ik wil de belangrijke aangeven.

  • label & singular_label: Dit zijn de labels zoals we ze in de WordPress-beheerder willen laten verschijnen. 'label' wordt weergegeven in de admin nav en overal die verwijst naar meerdere vermeldingen van dat type (bijvoorbeeld Edit Products). 'singular_label' wordt weergegeven wanneer naar een van dat type wordt verwezen (bijvoorbeeld Product toevoegen).
  • capability_type: Dit vertelt WordPress welk native type (post, pagina, bijlage, revisie of nav-menu-item) het aangepaste type zich zal gedragen als. Door het een 'post'-type te maken, kunnen we dingen doen zoals toevoegen aan een categorie.
  • herschrijven: Vertel WordPress of (of hoe) om de opmaak van permalinks toe te passen. U kunt een booleaanse verzenden zoals we hebben gedaan, of een array van argumenten om een ​​aangepaste permalink-indeling toe te passen op het type.
  • ondersteuningen: Dit is alles op de pagina voor toevoegen / bewerken die wordt weergegeven. We willen een titel, editor (de inhoud) en miniatuurafbeeldingen. Vervolgens zullen we onze eigen aangepaste ingangen toevoegen door aangepaste velden slim te maskeren als invoervelden voor ons aangepaste type.

Het toevoegen van onze eigen ingangen

Laten we onze eigen aangepaste ingangen voor ons nieuwe type toevoegen. Omdat we nu nieuwe berichttypen kunnen maken, kunnen we de aangepaste velden meer gestroomlijnd maken voor gebruikers die misschien niet zo vertrouwd zijn met WordPress als wij. Het is vermeldenswaard dat deze functionaliteit beschikbaar is sinds 2.5 en tot nu toe voornamelijk werd gebruikt door ontwikkelaars van plug-ins. Hier gaan we een prijsveld toevoegen.

 ID KAART); $ price = $ custom ["price"] [0]; ?>  ID, "prijs", $ _POST ["prijs"]); ?>

Nogmaals, de eerste paar regels zijn haken om WordPress te vertellen wanneer we bepaalde functies willen gebruiken. De eerste regel zegt dat wanneer het admin-paneel wordt geïnitialiseerd, de functie oproept die we hebben geschreven, admin_init (). Deze functie vertelt WordPress om een ​​gebied met de naam "Productopties" toe te voegen aan alle berichten van het type 'product' en om de functie te gebruiken meta_options () om de formuliervelden af ​​te drukken. Je kunt hier meer lezen over add_meta_box. meta_options () krijgt dan al bestaande aangepaste waarden en drukt het formulierveld af. De tweede actielijn geeft aan dat wanneer een bericht is opgeslagen, onze functie oproept save_price (), welke gebruikt update_post_meta () om een ​​aangepast veld met de naam 'prijs' toe te voegen of te updaten.


Aangepaste categorieën en bewerk kolommen

Onze laatste stap bij het maken van een volledig aangepast type is het geven van unieke namen aan de categorie en het bewerken van kolomlabels. Eerst de aangepaste categorienaam of 'taxonomie'.

 register_taxonomy ("catalogus", array ("product"), array ("hierarchical" => true, "label" => "Catalogs", "singular_label" => "Catalogus", "herschrijven" => waar));

De functie die we gebruiken is register_taxonomy (), die je hier in de codex kunt vinden; het is beschikbaar sinds 2.8. In feite zeggen we dat we een nieuw categorietype willen maken met de naam 'catalogus' dat we koppelen aan het type 'product'. Het laatste argument is een reeks informatie die lijkt op wat we hebben gezien register_post_type () functie. Wanneer alles is gezegd en gedaan, zullen we de term 'Catalog' onder het menu Producten in de WordPress-beheerder laten verschijnen en het zal als Post-categorieën doen.

Vervolgens willen we een aangepaste reeks kolommen maken voor ons producttype.

 add_filter ("manage_edit-product_columns", "prod_edit_columns"); add_action ("manage_posts_custom_column", "prod_custom_columns"); function prod_edit_columns ($ columns) $ columns = array ("cb" => ""," title "=>" Product Title "," description "=>" Description "," price "=>" Price "," catalog "=>" Catalog ",); return $ columns; function prod_custom_columns ($ kolom) global $ post; switch ($ column) case "description": the_excerpt (); break; case "price": $ custom = get_post_custom (); echo $ custom ["price"] [0]; break; case "catalogus": echo get_the_term_list ($ post-> ID, 'catalogus', ", ',',"); pauze;

De eerste twee regels zijn haken om WordPress te vertellen dat we aangepaste kolommen willen voor het type 'product'. De eerste regel zegt dat wanneer u kolommen voor het producttype afdrukt, de kolommen gebruikt die in de functie zijn gedefinieerd prod_edit_columns ().

In prod_edit_columns (), we hebben een array met sleutelwaarden waarbij de sleutels worden gebruikt om naar bepaalde postinformatie te verwijzen, die we in de tweede functie definiëren, prod_custom_columns (). De waarden in die array zijn de kolomkoppen. Dat zal je misschien opmerken prod_edit_columns () somt vijf kolommen op, maar we beschrijven alleen display-informatie voor drie in prod_custom_columns (). 'cb' en 'title' maken deel uit van een set standaardtoetsen waarvoor WordPress al associaties heeft. WordPress weet niet wat de andere drie zijn, dus het is aan ons om ze te definiëren.


De themasjabloon maken

Niet te sjofel, toch? En nu zijn we eindelijk klaar met het leuke deel - de themasjabloon. Om een ​​themasjabloon voor een aangepast berichttype te maken, noemen we de sjabloon enkel-.php en voeg het toe aan ons thema. In ons geval zou dit single-product.php zijn. Hier zal ik je een fragment van die pagina laten zien met alle informatie die we hebben toegevoegd aan ons aangepaste berichttype:

  ID KAART); $ prijs = "$". $ Aangepaste [ "price"] [0]; ?> 
>

-

Ik heb deze code toegevoegd aan het Twentyten-thema in WordPress 3.0 Beta, omdat dit het enige thema is dat de nieuwe functionaliteit ondersteunt, namelijk het menusysteem. Ik heb de single.php-template gekopieerd, de naam single-product.php omgedoopt en alles in de 'content'-div met de bovenstaande code vervangen. Om mijn code te testen, ging ik naar Thema's -> Menu's en voegde ons nieuwe type toe aan de navigatie van mijn site. Vervolgens klikte ik door naar ons aangepaste berichttype.


Afsluiten

Zoals ik eerder al zei, is WordPress 3.0 nog steeds in beta (je kunt het hier vinden); dus er zijn nog wat bugs om uit te werken en sommige dingen kunnen veranderen in de definitieve versie. Het beste dat u kunt doen, is daar naar toe gaan en spelen met enkele van de nieuwe functies om uzelf vertrouwd te maken met de updates / wijzigingen. Van wat ik tot nu toe heb gezien, zien dingen er best goed uit!