Custom Post Types (CPT, WordPress): verschil tussen versies
(7 tussenliggende versies door dezelfde gebruiker niet weergegeven) | |||
Regel 27: | Regel 27: | ||
* Weergave. | * Weergave. | ||
− | == | + | == 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. | |
− | * | + | * 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/] |
− | + | == 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 65: | Regel 104: | ||
* 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 |
Versie van 9 dec 2017 16: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
- https://wordpress.stackexchange.com/questions/158742/add-custom-objects-entities-to-wordpress
- https://codex.wordpress.org/Post_Types
- http://web-profile.net/wordpress/docs/custom-post-types/
- https://wordpress.stackexchange.com/questions/158742/add-custom-objects-entities-to-wordpress
- https://wp-types.com/documentation/user-guides/displaying-wordpress-custom-content/
- http://www.wpbeginner.com/wp-tutorials/how-to-create-custom-post-types-in-wordpress/
- 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
- https://www.proteusthemes.com/blog/custom-post-types/
- https://www.proteusthemes.com/blog/create-a-custom-taxonomy/
- https://www.proteusthemes.com/blog/displaying-custom-post-types-templates-querying/
De-registratie van een CPT
Theming van custom fields