WordPress wordt geleverd met vijf standaard post types: post
page
attachment
revision
, en menu
.
Tijdens het ontwikkelen van uw plugin, kunt u uw eigen specifieke inhoudstype maken: bijvoorbeeld producten voor een e-commerce website, opdrachten voor een e-learning website, of films voor een review website.
Met behulp van Custom Post Types, kunt u uw eigen post type registreren. Zodra een aangepast post type is geregistreerd, krijgt het een nieuw top-level administratief scherm dat kan worden gebruikt om posts van dat type te beheren en te maken.
Om een nieuw post type te registreren, gebruik je de register_post_type() functie.
We raden je aan om aangepaste post types in een plugin te plaatsen in plaats van in een thema. Dit zorgt ervoor dat gebruikersinhoud overdraagbaar blijft, zelfs als het thema wordt gewijzigd.
Het volgende minimale voorbeeld registreert een nieuw post type, Producten, dat in de database wordt geïdentificeerd als wporg_product
.
function wporg_custom_post_type() {register_post_type('wporg_product',array('labels' => array('name' => __('Products', 'textdomain'),'singular_name' => __('Product', 'textdomain'),),'public' => true,'has_archive' => true,));}add_action('init', 'wporg_custom_post_type');
Expand full source codeCollapse full source code
Bezoek de referentiepagina voor register_post_type() voor de beschrijving van de argumenten.
Waarschuwing:
U moet register_post_type()
oproepen vóór de admin_init
hook en na de after_setup_theme
hook. Een goede haak om te gebruiken is de init
actiehaak.
Naming Best Practices #Naming Best Practices
Het is belangrijk dat u uw post type functies en identifiers voorziet van een kort voorvoegsel dat overeenkomt met uw plugin, thema, of website.
Waarschuwing:
Zorg ervoor dat uw aangepaste post type identificatie niet langer is dan 20 tekens, aangezien de post_type
kolom in de database momenteel een VARCHAR veld van die lengte is.
Waarschuwing:
Gebruik geen wp_ als identificatiecode om compatibiliteit met de toekomst te garanderen – deze wordt gebruikt door WordPress core.
Waarschuwing:
Als uw identificatiecode te algemeen is (bijvoorbeeld: “product
“), kan deze conflicteren met andere plugins of thema’s die ervoor hebben gekozen om dezelfde identificatiecode te gebruiken.
Note:
Het oplossen van dubbele post type identificatiecodes is niet mogelijk zonder een van de conflicterende post types uit te schakelen.
Top
URLs #URLs
Een aangepast post type krijgt zijn eigen slug binnen de site URL structuur.
Een post van het type wporg_product
zal standaard de volgende URL structuur gebruiken: http://example.com/wporg_product/%product_name%
.
wporg_product
is de slug van uw aangepaste post type en %product_name%
is de slug van uw specifieke product.
De uiteindelijke permalink zou zijn: http://example.com/wporg_product/wporg-is-awesome
.
U kunt de permalink zien in het bewerkingsscherm voor uw aangepaste post type, net als bij standaard post types.
Een aangepaste slug voor een aangepast post type #Een aangepaste slug voor een aangepast post type
Om een aangepaste slug voor de slug van uw aangepaste post type in te stellen hoeft u alleen een sleutel => waardepaar toe te voegen aan de rewrite
sleutel in de register_post_type()
argumenten array.
Voorbeeld:
function wporg_custom_post_type() {register_post_type('wporg_product',array('labels' => array('name' => __( 'Products', 'textdomain' ),'singular_name' => __( 'Product', 'textdomain' ),),'public' => true,'has_archive' => true,'rewrite' => array( 'slug' => 'products' ), // my custom slug));}add_action('init', 'wporg_custom_post_type');
Expand full source codeCollapse full source code
Het bovenstaande zal resulteren in de volgende URL-structuur: http://example.com/products/%product_name%
Waarschuwing:
Het gebruik van een generieke slug zoals products
kan mogelijk conflicteren met andere plugins of thema’s, dus probeer er een te gebruiken die specifieker is voor uw inhoud.
Note:
In tegenstelling tot de custom post type identifiers, kan het duplicate slug probleem eenvoudig worden opgelost door de slug te veranderen voor een van de conflicterende post types.
Als de plugin auteur een apply_filters()
aanroep op de argumenten heeft gezet, kan dit programmatisch worden gedaan door de argumenten te overschrijven die via de register_post_type()
functie worden opgegeven.