如何通过 post id 获取 post 特色图片
How to get post featured image by post id
我需要古腾堡编辑器的一些帮助。
我的自定义 post 类型有一个动态块。我从其余 api 中获取了所有 post,现在我想向它们添加它们的特色图片。
我的 HOC withSelect 中有 getEditedPostAttribute 和 getMedia,但我不确定它是否正确,因为 wp.data('core/editor').getEditedPostAttribute('featured_media') 总是 return 0 ,所以我的媒体对象将始终 return null。
这是我的代码:
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);
那么我应该如何映射或传递我获取的媒体对象以获取每个 post 的特色图像?
谢谢
我发现我可以使用 _embedded。所以我的代码变成:
export default withSelect(
(select, props) => {
return {
posts: select('core').getEntityRecords('postType', 'my_portfolio', 'per_page: 20', '_embed: true')
}
})(PortfolioPostsEdit);
然后我可以通过
获取我的特色图片
post._embedded['wp:featuredmedia'][0].source_url
我需要古腾堡编辑器的一些帮助。
我的自定义 post 类型有一个动态块。我从其余 api 中获取了所有 post,现在我想向它们添加它们的特色图片。 我的 HOC withSelect 中有 getEditedPostAttribute 和 getMedia,但我不确定它是否正确,因为 wp.data('core/editor').getEditedPostAttribute('featured_media') 总是 return 0 ,所以我的媒体对象将始终 return null。 这是我的代码:
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);
那么我应该如何映射或传递我获取的媒体对象以获取每个 post 的特色图像? 谢谢
我发现我可以使用 _embedded。所以我的代码变成:
export default withSelect(
(select, props) => {
return {
posts: select('core').getEntityRecords('postType', 'my_portfolio', 'per_page: 20', '_embed: true')
}
})(PortfolioPostsEdit);
然后我可以通过
获取我的特色图片post._embedded['wp:featuredmedia'][0].source_url