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

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
 
(7 tussenliggende versies door dezelfde gebruiker niet weergegeven)
Regel 13: Regel 13:
 
== Plugins ==
 
== Plugins ==
  
Er bestaan [https://wordpress.org/plugins/tags/custom-post-types/ 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:
+
Er bestaan [https://wordpress.org/plugins/tags/custom-post-types/ 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. Maar misschien nog belangrijker: Zelf doen (programmeren) is ook bepaald geen kattenpis. Daarom deze inventaris:
  
 
* [https://wordpress.org/plugins/custom-post-type-ui/ Custom Post Type UI] is gratis en helpt met aanmaak van CPT's, maar ''niet'' met het defineren van velden
 
* [https://wordpress.org/plugins/custom-post-type-ui/ Custom Post Type UI] is gratis en helpt met aanmaak van CPT's, maar ''niet'' met het defineren van velden
 
* [https://wordpress.org/plugins/types/ 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
 
* [https://wordpress.org/plugins/types/ 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
 
* [https://wordpress.org/plugins/advanced-custom-fields Advanced Custom Fields (ACF)] lijkt een CPT-gerelateerde module te zijn, maar het fijne snap ik er niet van.
 
* [https://wordpress.org/plugins/advanced-custom-fields Advanced Custom Fields (ACF)] lijkt een CPT-gerelateerde module te zijn, maar het fijne snap ik er niet van.
 +
*
  
 
== CPT - Onderdelen ==
 
== CPT - Onderdelen ==
Regel 27: Regel 28:
 
* Weergave.
 
* Weergave.
  
== Aanmaken van een CPT ==
+
== CPT defineren ==
  
 
Er zijn twee manieren om CPT's te defineren: Met behulp van plugins (bv. de [https://wordpress.org/plugins/custom-post-type-ui/ Custom Post Type UI]- en [https://wordpress.org/plugins/types/ 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.
 
Er zijn twee manieren om CPT's te defineren: Met behulp van plugins (bv. de [https://wordpress.org/plugins/custom-post-type-ui/ Custom Post Type UI]- en [https://wordpress.org/plugins/types/ 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.
Regel 33: Regel 34:
 
* Op [https://generatewp.com/post-type/ generatewp.com] kun je CPT-definitiecode generen om deze vervolgens te plakken in je eigen plugin - Super!
 
* Op [https://generatewp.com/post-type/ generatewp.com] kun je CPT-definitiecode generen om deze vervolgens te plakken in je eigen plugin - Super!
 
* Gebruik de functie <code>register_post_type()</code> om je CPT te registreren [http://www.mavengang.com/2016/07/12/unregister-post-type-using-unregister_post_type/]
 
* Gebruik de functie <code>register_post_type()</code> om je CPT te registreren [http://www.mavengang.com/2016/07/12/unregister-post-type-using-unregister_post_type/]
 +
 +
== 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:
 +
 +
<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 ==
Regel 43: Regel 89:
 
* http://www.wpbeginner.com/wp-tutorials/how-to-create-custom-post-types-in-wordpress/
 
* http://www.wpbeginner.com/wp-tutorials/how-to-create-custom-post-types-in-wordpress/
 
* https://codex.wordpress.org/Function_Reference/register_post_type
 
* https://codex.wordpress.org/Function_Reference/register_post_type
* https://wordpress.org/plugins/advanced-custom-fields
 
* https://wordpress.org/plugins/custom-post-type-ui
 
* https://pluginize.com/plugins/custom-post-type-ui-extended
 
* https://wordpress.org/plugins/tags/custom-post-types/
 
* https://wordpress.org/plugins/types/
 
* https://conductorplugin.com/display-custom-post-types-wordpress
 
  
''' Proteus Themes-blog - Inleiding '''
+
''' CPT - Proteus Themes-blog - Inleiding '''
  
 
* https://www.proteusthemes.com/blog/custom-post-types/
 
* https://www.proteusthemes.com/blog/custom-post-types/
Regel 59: Regel 99:
  
 
* http://www.mavengang.com/2016/07/12/unregister-post-type-using-unregister_post_type/
 
* http://www.mavengang.com/2016/07/12/unregister-post-type-using-unregister_post_type/
 +
 +
''' Theming van custom fields '''
 +
 +
* https://wordpress.org/support/topic/displaying-custom-fields-and-custom-post-types/
 +
* https://codex.wordpress.org/Using_Custom_Fields
 +
 +
''' Plugins '''
 +
 +
* https://wordpress.org/plugins/advanced-custom-fields
 +
* https://wordpress.org/plugins/custom-post-type-ui
 +
* https://pluginize.com/plugins/custom-post-type-ui-extended
 +
* https://wordpress.org/plugins/tags/custom-post-types/
 +
* https://wordpress.org/plugins/types/
 +
* https://conductorplugin.com/display-custom-post-types-wordpress
 +
* https://wordpress.stackexchange.com/questions/8932/how-to-create-a-list-of-items-with-fields-in-wordpress
 +
* https://wordpress.org/plugins/pods/

Huidige versie van 12 dec 2017 om 19:06

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. Maar misschien nog belangrijker: Zelf doen (programmeren) is ook bepaald geen kattenpis. Daarom deze inventaris:

  • 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

CPT - Proteus Themes-blog - Inleiding

De-registratie van een CPT

Theming van custom fields

Plugins