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が実行されないと変わらないので、タグやカテゴリを変更してすぐに反応するというわけではありませんでした。
Author And Source
この問題について(WordPressのカスタムブロックで、その投稿のカテゴリ / タグを取得する), 我々は、より多くの情報をここで見つけました https://zenn.dev/hideokamoto/articles/d183b906ad2761889ca2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol