Custom Post Types (CPT, WordPress): verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
Regel 54: Regel 54:
  
 
Idealiter zou je deze bestanden onderbrengen in ''theme-child-bestanden'', maar rechtstreeks in the theme-mappen, kan ook
 
Idealiter zou je deze bestanden onderbrengen in ''theme-child-bestanden'', maar rechtstreeks in the theme-mappen, kan ook
 +
 +
Er is hoop:
 +
 +
<pre>
 +
<?php
 +
$blog_archive_pages_classes = hoshi_mikado_blog_archive_pages_classes(hoshi_mikado_get_default_blog_list());
 +
?>
 +
<?php get_header(); ?>
 +
<?php hoshi_mikado_get_title(); ?>
 +
<div class="<?php echo esc_attr($blog_archive_pages_classes['holder']); ?>">
 +
<?php do_action('hoshi_mikado_after_container_open'); ?>
 +
<div class="<?php echo esc_attr($blog_archive_pages_classes['inner']); ?>">
 +
 +
 +
<?php the_meta(); ?>
 +
 +
 +
 +
<?php hoshi_mikado_get_blog(hoshi_mikado_get_default_blog_list()); ?>
 +
</div>
 +
<?php do_action('hoshi_mikado_before_container_close'); ?>
 +
</div>
 +
<?php get_footer(); ?>
 +
</pre>
  
 
== Bronnen ==
 
== Bronnen ==

Versie van 9 dec 2017 17:37

Custom Post Types is het WordPress-equivalent van Drupal's Content Construction Kit (CCK). Een interessant verschil tussen Drupal en WordPress: Drupal staat zich erop voor dat het vooral heel serieus en groot is. CCK is zodoende een integraal onderdeel van Drupal, met een interface die ik altijd erg goed vond. In WordPress vormt CPT duidelijk een minder belangrijk onderdeel. Er is niet eens een éénduidige module voor, en ironisch genoeg, word je al snel geacht dit zelf te gaan programmeren, want ik nou net niet van WordPress had verwacht. Maar dit mag de pret niet drukken -- En ik ben nog altijd erg blij dat ik ben overgestapt van Drupal naar Wordpress.

Standaard content-types

Vers uit de verpakking beschikt WordPress over de volgende content-types:

  • Post
  • Page
  • Commentaar
  • Revisie
  • Menu-item.

Plugins

Er bestaan tientallen CPT-gerelateerde plugins, maar niet één is de onbetwiste keuze. De meeste plugins lijken ook maar een deel van de gezochte functionaliteit te verzorgen:

  • Custom Post Type UI is gratis en helpt met aanmaak van CPT's, maar niet met het defineren van velden
  • Toolset Types is een gratis plugin om CPT's + velden te defineren. Bevalt goed, maar voor weergave heb je een additionele plugin nodig, en die kost $69
  • Advanced Custom Fields (ACF) lijkt een CPT-gerelateerde module te zijn, maar het fijne snap ik er niet van.

CPT - Onderdelen

Als je met eigen post-types aan de slag gaat, krijg je zoal te maken met:

  • Registratie van het post-type
  • Definitie van de velden
  • Weergave.

CPT defineren

Er zijn twee manieren om CPT's te defineren: Met behulp van plugins (bv. de Custom Post Type UI- en Toolset Types-plugin), of in code. Wanneer je voor deze laatste optie kiest, zijn er twee locaties om die code te plaatsen: In functions.php of in een eigen plugin. Ik volg deze laatste optie, want dat is de enige correcte manier.

  • Op generatewp.com kun je CPT-definitiecode generen om deze vervolgens te plakken in je eigen plugin - Super!
  • Gebruik de functie register_post_type() om je CPT te registreren [1]

Velden toevoegen

Om Velden toe te voegen:

  • Bij het genereren van de code, zet een vinkje onder Custom fiels (of zoiets)
  • In de WordPress-interface kun je velden toevoegen.

Weergave & theming

Je CPT-objecten zijn al zichtbaar op de site:

  • Volg de permalink voor weergave van een enkel object
  • Gebruik dezelfde link, maar dan zonder de laatste toevoeging (naam specifiek object), voor de archive-pagina.

Helaas worden de nieuwe velden niet weergegeven. Daar heb je theming voor nodig. Dit zijn de twee belangrijkste theming-bestanden:

  • archive-cptnaam.php
  • single-cptnaam.php.

Idealiter zou je deze bestanden onderbrengen in theme-child-bestanden, maar rechtstreeks in the theme-mappen, kan ook

Er is hoop:

<?php
$blog_archive_pages_classes = hoshi_mikado_blog_archive_pages_classes(hoshi_mikado_get_default_blog_list());
?>
<?php get_header(); ?>
<?php hoshi_mikado_get_title(); ?>
<div class="<?php echo esc_attr($blog_archive_pages_classes['holder']); ?>">
	<?php do_action('hoshi_mikado_after_container_open'); ?>
	<div class="<?php echo esc_attr($blog_archive_pages_classes['inner']); ?>">


		<?php the_meta(); ?>



		<?php hoshi_mikado_get_blog(hoshi_mikado_get_default_blog_list()); ?>
	</div>
	<?php do_action('hoshi_mikado_before_container_close'); ?>
</div>
<?php get_footer(); ?>

Bronnen

Proteus Themes-blog - Inleiding

De-registratie van een CPT

Theming van custom fields