Skip to content

Custom Taxonomies

config/custom-taxonomies.php

This file contains all registration for custom taxonomies.

Use TaxonomyBuilder::make() to register a custom taxonomy. The slug passed to make() is the taxonomy name registered with WordPress.

config/custom-taxonomies.php
<?php
use App\Lib\WordPress\TaxonomyBuilder;
return [
TaxonomyBuilder::make('type')
->addTo('post'),
];

Labels are auto-derived from the slug (typeType / Types). Override them with named():

return [
TaxonomyBuilder::make('type')
->named('Type', 'Types')
->addTo('post'),
];

Define slugs in PostTypeConstant and TaxonomyConstant so they can be referenced without string literals:

app/Constant/TaxonomyConstant.php
final class TaxonomyConstant
{
const TYPE = 'type';
}
config/custom-taxonomies.php
<?php
use App\Constant\PostTypeConstant;
use App\Constant\TaxonomyConstant;
use App\Lib\WordPress\TaxonomyBuilder;
return [
TaxonomyBuilder::make(TaxonomyConstant::TYPE)
->named('Type', 'Types')
->addTo(PostTypeConstant::PORTFOLIO),
];
MethodDescription
named(string $singular, ?string $plural)Set display labels. Auto-derived from slug if omitted.
addTo(string $postTypeSlug)Attach taxonomy to a post type. Call multiple times for multiple post types.
setPrivate()Hide from public queries and nav menus.
setLabel(string $key, mixed $value)Override a single label.
setLabels(array $labels)Override multiple labels.
setArg(string $key, mixed $value)Override a single WP arg.
setArgs(array $args)Override multiple WP args.
<?php
use App\Constant\PostTypeConstant;
use App\Constant\TaxonomyConstant;
use App\Lib\WordPress\TaxonomyBuilder;
return [
TaxonomyBuilder::make(TaxonomyConstant::GENRE)
->named('Genre', 'Genres')
->addTo(PostTypeConstant::EVENT),
TaxonomyBuilder::make(TaxonomyConstant::TYPE)
->named('Type', 'Types')
->addTo(PostTypeConstant::PORTFOLIO)
->addTo(PostTypeConstant::EVENT),
];