WordPress의 사용자 정의 블록에서 이 발언의 분류/라벨을 가져옵니다

데이터를 직접 얻을 수 있는 API를 찾지 못했기 때문에 시도해 보았다.

코드


import { useSelect } from '@wordpress/data';
const useCurrentPostCategories = () => {
	const categoryIds = wp.data.select('core/editor').getEditedPostAttribute('categories')
	return useSelect((select) => {
		const {getEntityRecords} = select('core')
		const taxonomies = getEntityRecords('taxonomy', 'category')
		if (!taxonomies) return []
		const currentCategories = taxonomies.filter(taxonomy => {
			return categoryIds.includes(taxonomy.id)
		})
		return currentCategories
	}, [categoryIds])
}

import { useSelect } from '@wordpress/data';
const useCurrentPostTags = () => {
	const tagIds = wp.data.select('core/editor').getEditedPostAttribute('tags')
	return useSelect((select) => {
		const {getEntityRecords} = select('core')
		const taxonomies = getEntityRecords('taxonomy', 'post_tag')
		if (!taxonomies) return []
		const currentTags = taxonomies.filter(taxonomy => {
			return tagIds.includes(taxonomy.id)
		})
		return currentTags
	}, [tagIds])
}

잡담


정리해도 될 것 같은데 지금 해보면 무한순환이 들어간다.
또한 이 연결을 실행하는 블록의render를 실행하지 않으면 변화가 일어나지 않기 때문에 탭이나 종류를 변경한 후 바로 반응하는 것은 아니다.

좋은 웹페이지 즐겨찾기