Custom Post Types en Custom Fields in WordPress zijn een enorm krachtige manier om het platform beter af te stemmen op jouw specifieke noden. Met aangepaste ‘Admin Columns’ visualiseer je die makkelijk en overzichtelijk in het WordPress dashboard.
Opzet
Voor deze demo heb ik een lege WordPress installatie opgezet. Ik heb een Custom Post Type “belverzoeken” gemaakt en hier een custom field aan gekoppeld genaamd “telefoonnummer”.
De uitdaging
In een vorige tutorial hebben we een front-end formulier gekoppeld aan een custom post type “belverzoeken”. Nu willen we deze functionaliteit verder uitbreiden door in het WordPress dashboard ook meteen het telefoonnummer te tonen zonder dat we de post moeten openklikken.

De oplossing
Er zijn twee verschillende stukken code die je zal moeten gebruiken om custom admin columns te maken. Het eerste stuk code ontfermt zich over het aanmaken van de kolommen, het tweede stuk vult de kolommen met data. Deze code kan simpelweg in je functions.php gaan.
Admin kolommen aanmaken
Een admin column is steeds gekoppeld aan een custom post type. In onderstaande code zal je dus ‘belverzoek’ moeten wijzigen naar jouw eigen custom post type. We maken gebruik van de WordPress filter manage_posttype_post_columns om de extra kolommen aan te maken.
function add_columns_belverzoek ( $columns ) {
return array_merge ( $columns, array (
'telefoonnummer' => 'Telefoonnummer' ,
'belverzoek_status' => 'Status'
) );
}
add_filter ( 'manage_belverzoek_posts_columns', 'add_columns_belverzoek' );
In de functie ‘add_columns_belverzoek’ krijgen we dus een array van alle kolommen. Met de PHP-functie array_merge breiden we die kolommen uit met twee nieuwe kolommen waar we een key en value voor geven. De key is hoe we straks de kolom gaan vullen, de value is het label dat wordt gebruikt in het WordPress dashboard.
Ikzelf gebruik maar 1 extra kolom (telefoonnummer), maar ik heb in bovenstaande code een extra veld toegevoegd ter demonstratie.

Kolommen vullen
De kolom verschijnt nu in je WordPress dashboard bij je Custom Post Type, maar nergens zal je een waarde zien. Logisch, want we hebben enkel de kolom aangemaakt zonder enige data te voorzien voor deze kolom. Dat doen we in een afzonderlijke functie door gebruik te maken van manage_posttype_posts_custom_column. Belangrijk hier is om ‘posttype’ te vervangen door jouw custom post type waarvoor je de custom columns aanmaakt.
function belverzoek_custom_columns ( $column, $post_id ) {
switch ( $column ) {
case 'telefoonnummer':
echo get_post_meta ( $post_id, 'telefoonnummer', true );
break;
case 'belverzoek_status':
echo get_post_meta ( $post_id, 'belverzoek_status', true );
break;
}
}
add_action ( 'manage_belverzoek_posts_custom_column', 'belverzoek_custom_columns', 10, 2 );
In bovenstaande functie overlopen we alle kolommen. Als de key van de kolom overeenkomt met de key dat we in de vorige functie hebben opgegeven, dan vullen we deze kolom met de data. In mijn geval moet ik het custom field met key ’telefoonnummer’ ophalen. Concreet ziet dat er zo uit:

Laat een reactie achter