_x('Product Allergens', 'taxonomy general name', 'allergen-exclusion-filter'), 'singular_name' => _x('Allergen', 'taxonomy singular name', 'allergen-exclusion-filter'), // The esc_html__() function is used for text that goes to the admin interface. 'menu_name' => esc_html__( 'Allergens', 'allergen-exclusion-filter' ), 'search_items' => esc_html__( 'Search Allergens', 'allergen-exclusion-filter' ), 'all_items' => esc_html__( 'All Allergens', 'allergen-exclusion-filter' ), 'parent_item' => esc_html__( 'Parent Allergen', 'allergen-exclusion-filter' ), 'parent_item_colon' => esc_html__( 'Parent Allergen:', 'allergen-exclusion-filter' ), 'edit_item' => esc_html__( 'Edit Allergen', 'allergen-exclusion-filter' ), 'update_item' => esc_html__( 'Update Allergen', 'allergen-exclusion-filter' ), 'add_new_item' => esc_html__( 'Add New Allergen', 'allergen-exclusion-filter' ), 'new_item_name' => esc_html__( 'New Allergen Name', 'allergen-exclusion-filter' ), ); $args = array( 'hierarchical' => true, 'labels' => $labels, 'show_ui' => true, 'show_admin_column' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'allergen', // Matching simple slug 'allergen' 'with_front' => false ), // Security: explicit permission control 'capabilities' => array( 'manage_terms' => 'manage_product_terms', 'edit_terms' => 'manage_product_terms', 'delete_terms' => 'manage_product_terms', 'assign_terms' => 'edit_products', ), ); // Associate the taxonomy with the WooCommerce ‘product’ post type register_taxonomy( 'saef_product_allergens', array('product'), $args ); } /** * 4. CRITICAL ACTIVATION: Function called when activating the plugin. * Forces the URL rewrite rules to be flushed * so that the URLs of the new taxonomy work immediately. */ public function saef_rewrite_flush() { // We call the registration function to ensure that the taxonomy is defined. $this->saef_register_taxonomies(); // The critical function for avoiding 404s flush_rewrite_rules(); } }