# extendify/0.1.0/src/hooks/useTaxonomies.js

Extendify, version 0.1.0. 28 lines.

- Page: https://pluginprobe.com/plugins/extendify/0.1.0/code/src/hooks/useTaxonomies.js
- Raw: https://pluginprobe.com/plugins/extendify/0.1.0/raw/src/hooks/useTaxonomies.js
- Modified: 2022-01-06T18:08:32+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/extendify/0.1.0/code/src/hooks/useTaxonomies.js#L10-L20`.

```javascript
import { useEffect, useCallback } from '@wordpress/element'
import { Taxonomies as TaxonomiesApi } from '../api/Taxonomies'
import { useTaxonomyStore } from '../state/Taxonomies'
import { useTemplatesStore } from '../state/Templates'

export default function useTaxonomies(fetchImmediately = false) {
    const setupDefaultTaxonomies = useTemplatesStore(
        (state) => state.setupDefaultTaxonomies,
    )
    const setTaxonomies = useTaxonomyStore((state) => state.setTaxonomies)
    const fetchTaxonomies = useCallback(async () => {
        let tax = await TaxonomiesApi.get()
        tax = Object.keys(tax).reduce((taxFiltered, key) => {
            taxFiltered[key] = tax[key]
            return taxFiltered
        }, {})
        if (!Object.keys(tax)?.length) {
            return
        }
        setTaxonomies(tax)
        setupDefaultTaxonomies()
    }, [setTaxonomies, setupDefaultTaxonomies])

    useEffect(() => {
        fetchImmediately && fetchTaxonomies()
    }, [fetchTaxonomies, fetchImmediately])
}

```
