useTaxonomies.js (1024B)
1 import { useEffect, useCallback } from '@wordpress/element' 2 import { Taxonomies as TaxonomiesApi } from '../api/Taxonomies' 3 import { useTemplatesStore } from '../state/Templates' 4 import { useTaxonomyStore } from '../state/Taxonomies' 5 6 export default function useTaxonomies(open) { 7 const setupDefaultTaxonomies = useTemplatesStore(state => state.setupDefaultTaxonomies) 8 const setTaxonomies = useTaxonomyStore(state => state.setTaxonomies) 9 const fetchTaxonomies = useCallback(async () => { 10 let tax = await TaxonomiesApi.get() 11 // Only allow items that have the 'tax_' prefix 12 tax = Object.keys(tax) 13 .filter((t) => t.startsWith('tax_')) 14 .reduce((taxFiltered, key) => { 15 taxFiltered[key] = tax[key] 16 return taxFiltered 17 }, {}) 18 setupDefaultTaxonomies(tax) 19 setTaxonomies(tax) 20 }, [setupDefaultTaxonomies, setTaxonomies]) 21 22 useEffect(() => { 23 open && fetchTaxonomies() 24 }, [fetchTaxonomies, open]) 25 }