| | |
| | | <?php |
| | | namespace JVBase\registry; |
| | | |
| | | use JVBase\meta\MetaManager; |
| | | use JVBase\meta\MetaRegistry; |
| | | use JVBase\managers\CacheManager; |
| | | use JVBase\utility\Checker; |
| | | use Exception; |
| | | use WP_Error; |
| | | use JVBase\meta\Meta; |
| | | use JVBase\meta\Registry; |
| | | if (!defined('ABSPATH')) { |
| | | exit; |
| | | } |
| | |
| | | if ($this->config['is_content'] ?? false) { |
| | | $this->setupContentTaxonomyHooks(); |
| | | } |
| | | $this->registerHooks(); |
| | | } |
| | | |
| | | public function register(): void |
| | |
| | | |
| | | $this->maybeAddRewriteRule($args['rewrite']); |
| | | if (!empty($this->fields)) { |
| | | $meta_registry = new MetaRegistry($this->fields, $this->slug, 'term'); |
| | | $meta_registry = new Registry($this->fields, $this->slug, 'term'); |
| | | $meta_registry->registerMetaFields(); |
| | | } |
| | | } |
| | |
| | | // Prepare data for insertion/update |
| | | $data = [ |
| | | 'term_id' => $term_id, |
| | | 'name' => $term->name, |
| | | 'name' => html_entity_decode($term->name), |
| | | 'slug' => $term->slug, |
| | | 'updated_at' => current_time('mysql') |
| | | ]; |
| | | |
| | | // Get meta manager for this term |
| | | $meta = new MetaManager($term_id, 'term'); |
| | | $meta = Meta::forTerm($term_id); |
| | | $values = $meta->getAll(array_keys($custom_fields)); |
| | | |
| | | // Process each custom field |
| | |
| | | { |
| | | return jvbContentTaxonomiesTableFields($this->slug)['fields'] ?? []; |
| | | } |
| | | |
| | | protected function registerHooks():void |
| | | { |
| | | $actions = ['created_term', 'edited_term', 'delete_term']; |
| | | $taxonomy = $this->taxonomy; |
| | | foreach ($actions as $action) { |
| | | add_action($action, function($term_id, $tt_id, $tax) use ($taxonomy, $action) { |
| | | if ($tax !== $taxonomy) return; |
| | | |
| | | $term = get_term($term_id, $tax); |
| | | |
| | | CacheManager::for(jvbNoBase($taxonomy))->invalidate(); |
| | | |
| | | // Clear cache for associated content types |
| | | $checker = Checker::getInstance(); |
| | | $content_types = $checker->getContentForTaxonomy($taxonomy); |
| | | |
| | | foreach ($content_types as $content_type) { |
| | | CacheManager::for($content_type)->invalidate(); |
| | | } |
| | | |
| | | do_action("jvb_taxonomy_cache_invalidated_{$taxonomy}", $term, $action); |
| | | }, 10, 3); |
| | | } |
| | | } |
| | | } |