Я создаю плагин Wordpress, который опирается на настраиваемые поля, включаемые при регистрации пользовательского типа записи.Я хочу проверить, существует ли ключ custom-fields
(и true
) в supports
в объекте типа записи.Однако, когда я звоню wp.data.select('core').getPostType('post-type')
, он возвращает undefined
.Если я вызываю его прямо из консоли, я получаю ожидаемый объект типа поста, поэтому я не уверен, почему он не работает в моем коде.
Я пытался вызвать его из нескольких мест.
Например, при регистрации панели плагинов:
// Loading `wp.editPosts`, `wp.plugins`, etc. excluded for brevity.
const Component = () => {
const postType = wp.data.select('core/editor').getCurrentPostType();
const postTypeObj = wp.data.select('core').getPostType(postType);
if (postTypeObj.supports.hasOwnProperty('custom-fields')) {
return (
<PluginDocumentSettingPanel
name="my-plugin-name"
title={ __('My Plugin Title', 'pb') }
>
<MyPlugin/>
</PluginDocumentSettingPanel>
);
}
return;
};
registerPlugin('my-plugin-name', {
render: Component,
icon: '',
});
или внутри самого плагина через withSelect
:
// Loading `wp.compose`, `wp.data`, etc. excluded for brevity.
class MyPlugin extends React.Component {
constructor(props) {
super(props);
this.state = {
// I'll do something with this later on
postTypeObj: props.postTypeObj,
};
}
render() {
return (
<div></div>
);
}
}
export default compose([
withSelect(select => {
const {
getCurrentPostType,
} = select('core/editor');
const {
getPostType,
} = select('core');
return {
postTypeObj: getPostType(getCurrentPostType()),
}
}),
])(MyPlugin);
Независимо от того, где я его называю,объект типа post возвращает undefined
.
Я использую плагин Gutenberg версии 6.5.0
и версию WordPress 5.2.3
.
Любая помощь приветствуется.