Aangepaste berichttypen zijn een van de belangrijkste elementen die u moet begrijpen als u flexibele, professionele WordPress-sites wilt maken.

Welke aangepaste berichttypen kunnen u gebruiken om uw eigen type gegevens toe te voegen; dat kan een artikel, een liedje, een film of duizenden andere dingen zijn. Met aangepaste berichttypen kunt u uw gegevens indelen op basis van uw individuele behoeften, waardoor u meer controle hebt over hoe uw site zich gedraagt.

In dit artikel neem ik u mee door een aangepast filmposttype voor een filmdatabase te maken.

Waarom aangepaste berichttypen gebruiken?

Om een ​​filmwebsite te maken, moeten we een database opzetten. Om dit te doen zonder aangepaste berichttypes zou uiterst lastig zijn, en mogelijk botsen met onze bestaande WordPress-installatie. Ons aangepaste berichttype heeft echter een eigen beheerdersmenu en een aangepaste bewerkingspagina. Als we zouden willen kunnen we zelfs aangepaste taxonomieën toevoegen aan de pagina met de namen en eigenschappen die passen bij het project.

Aangepaste berichttypes zijn wat WordPress van een blogplatform naar een volwaardige CMS brengen. Ze geven ons de vrijheid om onze filmwebsite op te zetten zonder vervelende hacks.

Ons filmpostype maken

In dit artikel zal ik alle code weergeven die nodig is om een ​​aangepast berichttype te maken, en dan zullen we het regel voor regel doornemen, zodat u kunt leren wat elk onderdeel doet en het aan uw behoeften aanpassen.

Hier is de volledige code die wordt toegevoegd aan uw functions.php- bestand:

add_action( 'init', 'register_movie' );function register_movie() {$labels = array('name' => 'Movies','singular_name' => 'Movie','add_new' => 'Add New','add_new_item' => 'Add New Movie','edit_item' => 'Edit Movie','new_item' => 'New Movie','view_item' => 'View Movie','search_items' => 'Search Movies','not_found' => 'No movies found','not_found_in_trash' => 'No movies found in Trash','menu_name' => 'Movies',);$args = array('labels' => $labels,'hierarchical' => false,'description' => 'Here you will add all the movies for the database','supports' => array( 'title', 'editor', 'thumbnail' ),'taxonomies' => array( 'genre', 'movies', 'year' ),'public' => true,'show_ui' => true,'show_in_menu' => true,'menu_position' => 5,//'menu_icon' => the image link here,'show_in_nav_menus' => true,'publicly_queryable' => true,'exclude_from_search' => false,'has_archive' => true,'query_var' => true,'can_export' => true,'rewrite' => true,'capability_type' => 'post');register_post_type( 'movie', $args );}

Zoals je ziet, gaat een ietwat groot stuk code in het creëren van een aangepast berichttype, maar als je het begrijpt, kun je deze code krijgen en aanpassen aan je projecten. In de eerste regel koppelen we de functie met ons aangepaste berichttype aan het init en dit betekent dat onze functie wordt geactiveerd wanneer WordPress dat doet, zodat we het altijd in ons dashboard hebben:

add_action( 'init', 'register_movie' );

De labels

In de volgende regel beginnen we met het declareren van de naam van onze functie en een variabele met alle labels die aan ons filmposttype zullen worden gekoppeld, zodat alles kan worden aangepast.

Het eerste dat we in de labels aangeven, is de naam van ons aangepaste berichttype, in meervoud en enkelvoud:

'name' => 'Movies','singular_name' => 'Movie',

In de volgende twee regels moeten we onze nieuwe tekst toevoegen (als we deze willen wijzigen) en dan stellen we Nieuwe film toevoegen in, zodat we bij het toevoegen van een nieuwe film een ​​aangepaste ervaring hebben in plaats van een film toe te voegen en een kop 'voeg een nieuwe post toe'.

'add_new' => 'Add New','add_new_item' => 'Add New Movie',

Na de labels voor het maken van een nieuwe film, moeten we de labels instellen voor bewerking, de nieuwe itemtekst (standaard is dit New Post / New Page) en we moeten ook de view-berichttekst instellen:

'edit_item' => 'Edit Movie','new_item' => 'New Movie','view_item' => 'View Movie',

Nu in de labels gaan we verder met de zoekmogelijkheden in de wordpress-beheerder en onze labels daarvoor. We moeten labels instellen voor wanneer we films zoeken, wanneer er geen resultaten worden gevonden en ook wanneer er geen resultaten in de prullenbak zijn gevonden:

'search_items' => 'Search Movies','not_found' => 'No movies found','not_found_in_trash' => 'No movies found in Trash',

Het laatste label spreekt voor zich, hier moeten we de naam plaatsen die we het aangepaste berichttype in de gebruikersinterface van het menu willen hebben, in dit geval houden we gewoon vast aan "Movies":

'menu_name' => 'Movies',);

De argumenten

Nu moeten we naar onze argumenten gaan, daarvoor heb ik nog een variabele gemaakt die alle argumenten bevat, ik noemde het args.

Het eerste argument dat het vraagt ​​is de labels en alles wat we moeten doen is verwijzen naar de labels variabele die we net hebben onderzocht, zoals zo:

$args = array('labels' => $labels,

In de volgende regel moeten we instellen of ons berichttype al dan niet hiërarchische pagina's zal zijn (zoals berichten). In mijn geval wil ik niet dat films hiërarchisch zijn, dus ik heb het op false gezet. De volgende regel is slechts een optionele beschrijving van het berichttype.

'hierarchical' => false,'description' => 'Here you will add all the movies for the database',

De volgende regel is een belangrijke; hier moeten we specificeren wat ons aangepaste berichttype zal ondersteunen, welke velden het zal hebben. De opties voor dit veld zijn:

  • 'titel'
  • 'editor'
  • 'auteur'
  • 'Thumbnail'
  • 'uittreksel'
  • 'Trackbacks'
  • 'Custom-fields'
  • 'Opmerkingen'
  • 'Herzieningen'
  • 'Pagina-attributen'
  • 'Post-formats'

In mijn geval en voor mijn berichttype wil ik alleen dat het titel, de WYSIWYG- editor, een miniatuur en opmerkingen ondersteunt en daarvoor moet ik een array in deze regel toevoegen, zoals:

'supports' => array( 'title', 'editor', 'thumbnail','comments' ),

In de volgende regel moeten we specificeren welke taxonomieën het zal gebruiken, en aangezien we aangepaste taxonomieën zullen maken, zijn dit degenen die in deze regel zullen worden toegevoegd:

'taxonomies' => array( 'genre', 'actors', 'year' ),

De volgende drie regels hebben te maken met de zichtbaarheid van het berichttype in het beheergebied en alles wat ik doe is dat allemaal ingesteld op true:

'public' => true,'show_ui' => true,'show_in_menu' => true,

Vervolgens gaan we naar de positie van het menu waarin het berichttype moet verschijnen. Hier hebben we ook veel opties om uit te kiezen:

  • 5 - Hieronder berichten
  • 10 - Onder Media
  • 15 - Hieronder links
  • 20 - Onderste pagina's
  • 25 - Hieronder opmerkingen
  • 60 - Hieronder eerste scheidingsteken
  • 65 - Hieronder plugins
  • 70 - Hieronder gebruikers
  • 75 - Onder Hulpmiddelen
  • 80 - Hieronder instellingen
  • 100 - Onder het tweede scheidingsteken

In mijn geval wilde ik dat films meteen na het posten verschijnen, dus stelde ik de menupositie in op 5, zoals zo:

'menu_position' => 5,

In de volgende regel zorgen we voor het pictogram, kunnen we ons eigen pictogram instellen of het leeg laten en krijgen we het berichtpictogram in plaats daarvan, de regel erna zorgt voor wat we willen dat dit berichttype voor selectie in onze menu's verschijnt .

'menu_icon' => //the image link here,'show_in_nav_menus' => true,

In de volgende 3 regels voegen we de mogelijkheden van het berichttype toe; we stellen eerst in of we willen dat dit type bericht aan de voorkant wordt opgevraagd, dan bepalen we of we willen dat de resultaten van het posttype worden uitgesloten van zoekopdrachten en uiteindelijk beslissen we of we een archief willen voor het type filmpje:

'publicly_queryable' => true,'exclude_from_search' => false,'has_archive' => true,

In de volgende regel stellen we de vraagvariabele in voor ons berichttype en dit zal bepalen hoe de URL eruit zal zien, voor deze optie hebben we drie mogelijke parameters: we kunnen het instellen op waar en dan kunnen we de film bereiken met behulp van de /? -Film = name_of_movie; we kunnen het instellen op een string zodat de film in de URL wordt vervangen door alles wat we willen, zoals "show" en we zouden /? show = name_of_movie moeten gebruiken om dezelfde film te bereiken; de laatste optie is om het in te stellen op false en op deze manier maak je het onmogelijk om een ​​film te bereiken met behulp van de query_var. In mijn geval, en met de laatste optie in gedachten, heb ik mijn query var op true gezet, zodat we deze kunnen bereiken met de query_var van de film:

'query_var' => true,

In de volgende regel besluiten we of we de films exporteerbaar willen hebben en dan kiezen we de slug voor dit berichttype, in mijn geval heb ik gewoon geplakt met 'film' als de slug, maar je kunt elke tekenreeks als de film kiezen slug en je hebt echt genoeg opties, deze parameter is een uitgebreide.

'can_export' => true,'rewrite' => true,

De laatste regel van onze argumenten is waar we het type vermogen van onze post hebben ingesteld en omdat ik wil dat het exact hetzelfde heeft als normale berichten, gaf ik het gewoon de waarde van post, zoals zo:

   'capability_type' => 'post');

Onze labels en argumenten zijn klaar, alles wat we nu moeten doen is ons posttype registreren en de functie register_post_type vergt twee parameters, de eerste is de naam van ons aangepaste berichttype (dit heeft een maximum van 20 letters en geen hoofdletters) of spaties) en de tweede is de argumenten voor het berichttype en in deze zullen we gewoon onze args variabele plaatsen:

    register_post_type( 'movie', $args );}

Ons berichttype is gemaakt en volledig functioneel en alles wat je nodig hebt om het op je pagina's te laten verschijnen is wat wp_query magic.

Laatste woorden

Ik hoop dat je begrijpt waarom zoveel mensen aangepaste berichttypen gebruiken in WordPress.

Dit artikel is bedoeld om u inzicht te geven in het proces van het maken van een aangepast berichttype en geeft u een startpunt voor het maken van uw eigen geweldige aangepaste berichttypen.

Uitgelichte afbeelding / thumbnail, aangepaste afbeelding door ATOMIC Hot Links, via Flickr.