Veel WordPress ontwikkelaars zullen wel eens een custom post type hebben gedefinieerd met de register_post_type() functie. Met behulp van deze functie kun je zelf berichttypen definieren vergelijkbaar met de standaard WordPress ‘Bericht’ en ‘Pagina’ berichttypen. Zo kan bijvoorbeeld op de website van een schrijver het berichttype ‘Boek’ geregisteerd worden.
Ook veel WordPress plugins en thema’s maken dankbaar gebruik van de custom post type functionaliteit. Zo wordt binnen de WooCommerce webwinkel plugin voor de producten, bestellingen en coupons ook gebruik gemaakt van custom post types. Maar ook binnen de Pronamic iDEAL plugin wordt elke iDEAL-configuratie en betaling opgeslagen in een custom post type.
- https://github.com/woothemes/woocommerce/blob/v2.1.11/includes/class-wc-post-types.php#L216-L356
- https://github.com/pronamic/wp-pronamic-ideal/blob/2.8.0/includes/post.php#L4-L83
Een minder bekende functionaliteit van de custom post types zijn custom capabilities. Binnen WordPress wordt met behulp van gebruikersrollen en capabilities bepaald wie wat wel/niet kan doen. Zo kan een gebruiker met de rol ‘Beheerder’ alles instellingen beheren, maar kan een gebruiker met de rol ‘Auteur’ dat niet. Op vergelijkbare manier kan ook aangegeven worden of een gebruikersrol berichten kan beheren.
Standard kunnen custom post types beheerd worden door alle gebruikersrollen die ook de standaard WordPress berichten kunnen beheren. Dit is echter niet altijd gewenst en daarom kan binnen register_post_type() functie een capability type opgegeven worden.
Hierdoor kan het beheer van het boek berichttype verder afgeschermd worden aan de hand van de volgende capabilities:
Beschrijving | Capability |
---|---|
Bericht bewerken | edit_book |
Bericht lezen | read_book |
Bericht verwijderen | delete_book |
Berichten bewerken | edit_books |
Andermans berichten bewerken | edit_others_books |
Berichten publiceren | publish_books |
Privé berichten lezen | read_private_books |
Berichten verwijderen | delete_books |
Privé berichten verwijderen | delete_private_books |
Gepubliceerde berichten verwijderen | delete_published_books |
Andermans berichten verwijderen | delete_others_books |
Privé berichten bewerken | edit_private_books |
Gepubliceerde berichten bewerken | edit_published_books |
Dit is een erg krachtige techniek om op eenvoudige wijze het beheer van custom post types verder in te richten. Voor beheerders kan het echter lastig zijn om de verschillende gebruikersrollen en bijbehorende capabilities te beheren. Als een beheerder namelijk de drie gebruikersrollen ‘Beheerder’, ‘Auteur’ en ‘Redacteur’ toegang wil geven tot het boeken beheer moeten er vrij veel capabilities toegevoegd worden.
Er zijn gelukkig een aantal handige WordPress plugins beschikbaar waarmee gebruikersrollen en capabilities eenvoudig beheerd kunnen worden. Zo maken we bij Pronamic vaak gebruik van de Members plugin van Justin Tadlock. Maar ook de Use Role Editor plugin van Vladimir Garagulya is erg populair voor het beheren van gebruikersrollen.
Via deze plugins kan bijvoorbeeld de capability ‘read_book’ toegevoegd worden aan de gebruikersrol ‘Beheerder’ zodat beheerders de boek berichten kunnen lezen.