| | |
| | | use JVBase\JVB; |
| | | use JVBase\managers\CacheManager; |
| | | use WP_Error; |
| | | use WP_Post; |
| | | |
| | | if (!defined('ABSPATH')) { |
| | | exit; // Exit if accessed directly |
| | |
| | | { |
| | | global $wpdb; |
| | | $this->table_name = $wpdb->prefix . BASE.'taxonomy_relationships'; |
| | | $this->cache = new CacheManager('term_relationship', 86400); |
| | | $this->cache = CacheManager::for('term_relationship', WEEK_IN_SECONDS); |
| | | |
| | | // Ensure the table exists |
| | | // $this->create_table_if_not_exists(); |
| | |
| | | */ |
| | | public function init():void |
| | | { |
| | | add_action('save_post', [$this, 'updatePostRelationships']); |
| | | add_action('before_delete_post', [$this, 'updatePostRelationships']); |
| | | add_action('save_post', [$this, 'updatePostRelationships'], 10, 2); |
| | | add_action('before_delete_post', [$this, 'updatePostRelationships'], 10, 2); |
| | | add_action('delete_term', [$this, 'deleteTermRelationships']); |
| | | |
| | | add_filter(BASE.'handle_bulk_operation', [$this, 'processOperation'], 10, 3); |
| | |
| | | * |
| | | * @return void |
| | | */ |
| | | public function updatePostRelationships(int $post_id):void |
| | | public function updatePostRelationships(int $post_id, WP_Post $post):void |
| | | { |
| | | $this->cache->invalidateGroup('term_relationships'); |
| | | $post_type = get_post_type($post_id); |
| | | if (in_array($post_type, [BASE.'directory', BASE.'dash'])) { |
| | | $post_type = $post->post_type; |
| | | if (in_array($post_type, jvbIgnoredPostTypes())) { |
| | | return; |
| | | } |
| | | $this->cache->invalidate(); |
| | | // Get all taxonomies for this post type |
| | | $taxonomies = get_object_taxonomies($post_type); |
| | | |
| | |
| | | */ |
| | | public function rebuildAllRelationships():bool |
| | | { |
| | | $this->cache->invalidateGroup('term_relationships'); |
| | | $this->cache->invalidate(); |
| | | global $wpdb; |
| | | |
| | | // Clear existing relationships |
| | |
| | | ] |
| | | ); |
| | | |
| | | $this->cache->invalidateGroup('term_relationships'); |
| | | $this->cache->invalidate(); |
| | | |
| | | return true; |
| | | } |
| | |
| | | $term_id, |
| | | $term_id |
| | | )); |
| | | $this->cache->invalidateGroup('term_relationships'); |
| | | $this->cache->invalidate(); |
| | | } |
| | | } |