我需要古腾堡编辑器的帮助。
我的自定义帖子类型有一个动态块。我从rest api获取了所有帖子,现在我想向他们添加其特色图片。 我在HOC withSelect中有getEditedPostAttribute和getMedia,但是我不确定它是否正确,因为wp.data('core / editor')。getEditedPostAttribute('featured_media')始终返回0,因此我的媒体对象将始终返回空值。 这是我的代码:
import { Component } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
import { withSelect } from '@wordpress/data';
class PortfolioPostsEdit extends Component {
render() {
const { posts, className, media } = this.props;
return (
<>
{(posts && posts.length > 0) ?
<div className={className}>
{posts.map(post => (
<article key={post.id}>
<a href={post.link}>
{post.title.rendered}
</a>
<div>
{post.featured_media}
</div>
</article>
))}
</div>
: <div>{__("No Posts Found", "my-blocks")}</div>
}
</>
)
}
}
export default withSelect(
(select, props) => {
const { getMedia } = select( 'core' );
const { getEditedPostAttribute } = select( 'core/editor' );
const featuredImageId = getEditedPostAttribute( 'featured_media' );
return {
posts: select('core').getEntityRecords('postType', 'my_portfolio', 'per_page: 20'),
media: featuredImageId ? getMedia( featuredImageId ) : null,
featuredImageId,
}
}
)(PortfolioPostsEdit);
那么我应该如何映射或传递我的媒体对象以获取每个帖子的特色图片? 谢谢。
答案 0 :(得分:0)
我发现我可以使用_embed。所以我的代码变成:
export default withSelect(
(select, props) => {
return {
posts: select('core').getEntityRecords('postType', 'my_portfolio', 'per_page: 20', '_embed: true')
}
})(PortfolioPostsEdit);
然后我可以通过
获得我的特色图片post._embed['wp:featuredmedia'][0].source_url