| | |
| | | $post_types = array_map(fn($type) => BASE . $type, $this->config['for_content'] ?? []); |
| | | register_taxonomy($this->taxonomy, $post_types, $args); |
| | | |
| | | $this->maybeAddRewriteRule($args['rewrite']); |
| | | if (!empty($this->fields)) { |
| | | $meta_registry = new MetaRegistry($this->fields, $this->slug, 'term'); |
| | | $meta_registry->registerMetaFields(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * Add custom rewrite rule for hierarchical taxonomy slugs (e.g., post-type/by/taxonomy-slug) |
| | | */ |
| | | protected function maybeAddRewriteRule(array $rewrite_config): void |
| | | { |
| | | $slug = $rewrite_config['slug'] ?? $this->slug; |
| | | |
| | | // Only add custom rule if slug contains slashes (hierarchical path) |
| | | if (!str_contains($slug, '/')) { |
| | | return; |
| | | } |
| | | |
| | | add_rewrite_rule( |
| | | "^{$slug}/([^/]+)/?$", |
| | | 'index.php?' . $this->taxonomy . '=$matches[1]', |
| | | 'top' |
| | | ); |
| | | } |
| | | |
| | | private function buildLabels(string $singular, string $plural): array |
| | | { |
| | | return [ |