Jake Vanderwerf
2026-01-22 58e8ae0759ccfa97c478ccae4e0778bdce70966f
inc/rest/routes/TermRoutes.php
@@ -22,8 +22,11 @@
    {
        $this->cache_name = 'terms';
        parent::__construct();
//    $this->cache->invalidateGroup('terms');
      if (JVB_TESTING) {
         $this->cache->clear();
      }
        $this->per_page = 20;
        add_action('edited_term', [$this, 'deleteTermPath']);
        add_action('wp_login', [$this, 'clearUserTaxonomyCache'], 10, 2);
    }
@@ -181,8 +184,7 @@
    public function handleTermSelectionRequest(WP_REST_Request $request):WP_REST_Response
    {
      $data = $request->get_params();
      $taxonomy = jvbCheckBase($data['taxonomy'])??'';
      $taxonomy = sanitize_text_field($data['taxonomy'])??'';
      // Check HTTP cache headers
      $cache_check = $this->checkHeaders($request, $taxonomy);
      if ($cache_check) {
@@ -194,12 +196,13 @@
      if (str_contains($taxonomy, ',')) {
         return $this->handleBatchTermRequest($taxonomy, $data, $request);
      }
      $taxonomy = jvbCheckBase($taxonomy);
      if (array_key_exists('termIDs', $data)) {
         $args = [
            'taxonomy'  => $taxonomy,
            'include'   => $data['termIDs'],
            'hide_empty'   => false,
            'hide_empty'   => true,
         ];
         $key = $this->cache->generateKey($args);
         $cached = $this->cache->get($key);
@@ -240,9 +243,9 @@
                    'page' => 1,
                    'per_page' => $per_page,
                    'total_pages' => 0,
                    'total_terms' => 0,
                    'has_more' => false
                ]
                    'total_terms' => 0
                ],
            'has_more' => false
            ]);
        }
@@ -259,7 +262,7 @@
        // Get terms for current level with child count
        $args = [
            'taxonomy' => $taxonomy,
            'hide_empty' => false,
            'hide_empty' => true,
            'parent' => $parent,
            'number' => $per_page,
         'orderby'=> 'name',
@@ -283,8 +286,8 @@
                        'per_page' => $per_page,
                        'total_pages' => 0,
                        'total_terms' => 0,
                        'has_more' => false
                    ]
                    ],
               'has_more' => false
                ]);
            return $this->addCacheHeaders($response);
            }
@@ -305,9 +308,9 @@
                        'page' => 1,
                        'per_page' => $per_page,
                        'total_pages' => 0,
                        'total_terms' => 0,
                        'has_more' => false
                    ]
                        'total_terms' => 0
                    ],
               'has_more' => false
                ]);
            return $this->addCacheHeaders($response);
            }
@@ -364,9 +367,9 @@
                        'page' => 1,
                        'per_page' => $per_page,
                        'total_pages' => 0,
                        'total_terms' => 0,
                        'has_more' => false
                    ]
                        'total_terms' => 0
                    ],
               'has_more' => false
                ]);
            return $this->addCacheHeaders($response);
@@ -402,9 +405,9 @@
                'page' => $page,
                'per_page' => $per_page,
                'total_pages' => $total_pages,
                'total_terms' => (int)$total_terms,
                'has_more' => $has_more
            ]
                'total_terms' => (int)$total_terms
            ],
         'has_more' => $has_more
        ];
        $this->cache->set($key, $response);
@@ -441,9 +444,9 @@
         'items'  => $all_terms,
         'pagination'=> [
            'page' => $page,
            'per_page'=> $per_page,
            'has_more' => true,
         ]
            'per_page'=> $per_page
         ],
         'has_more' => true,
      ];
      $response = new WP_REST_Response($response);
@@ -532,7 +535,7 @@
        // When searching, we want to search across all terms regardless of hierarchy
        $args = [
            'taxonomy' => $taxonomy,
            'hide_empty' => false,
            'hide_empty' => true,
            'search' => $search,
            'search_columns' => ['name', 'slug'],
            'fields' => 'all',
@@ -555,9 +558,9 @@
                    'page' => 0,
                    'per_page' => 20,
                    'total_pages' => 0,
                    'total_terms' => 0,
                    'has_more' => false
                ]
                    'total_terms' => 0
                ],
            'has_more' => false
            ]);
        }
@@ -581,9 +584,9 @@
                'page' => (int)$page,
                'per_page' => (int)$per_page,
                'total_pages' => $total_pages,
                'total_terms' => (int)$total_terms,
                'has_more' => $has_more
            ]
                'total_terms' => (int)$total_terms
            ],
         'has_more' => $has_more
        ];
        $this->cache->set($key, $response);
@@ -775,9 +778,9 @@
                    'page'      => (int)$page,
                    'per_page'  => (int)$per_page,
                    'total_terms'=> $total,
                    'total_pages'=> $total_pages,
                    'has_more'  => $page < $total_pages
                ]
                    'total_pages'=> $total_pages
                ],
            'has_more'  => $page < $total_pages
            ];
            // Cache results
@@ -816,7 +819,7 @@
            // Build query args
            $args = [
                'taxonomy' => $taxonomy,
                'hide_empty' => false,
                'hide_empty' => true,
                'orderby' => $search ? 'name' : 'count',
                'order' => $search ? 'ASC' : 'DESC',
                'number' => $per_page,
@@ -839,9 +842,9 @@
                        'page' => 0,
                        'per_page' => 20,
                        'total_pages' => 0,
                        'total_terms' => 0,
                        'has_more' => 0
                    ]
                        'total_terms' => 0
                    ],
               'has_more' => 0
                ]);
            }
@@ -865,9 +868,9 @@
                    'page' => (int)$page,
                    'per_page' => (int)$per_page,
                    'total_pages' => $total_pages,
                    'total_terms' => (int)$total,
                    'has_more' => $page < $total_pages
                ]
                    'total_terms' => (int)$total
                ],
            'has_more' => $page < $total_pages
            ];
            // Cache results