Jake Vanderwerf
2026-02-04 2127b1bdd73ecd2423e443992da4b442f5a3c1a3
inc/registry/TaxonomyRegistrar.php
@@ -1,12 +1,8 @@
<?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;
}
@@ -31,7 +27,6 @@
      if ($this->config['is_content'] ?? false) {
         $this->setupContentTaxonomyHooks();
      }
      $this->registerHooks();
   }
   public function register(): void
@@ -57,7 +52,7 @@
      $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();
      }
   }
@@ -217,13 +212,13 @@
        // 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
@@ -346,30 +341,4 @@
    {
        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();
            CacheManager::for(jvbNoBase($taxonomy))->clear();
            // 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);
      }
   }
}