Я построил динамический блок в редакторе Гутенберга для последних пользовательских сообщений.
И извлекал для них Featuredmedia через _embed. Так что это работает, если во всех моих сообщениях есть изображение, но если нет, у меня ошибка в консоли:
TypeError: Cannot read property 'wp:featuredmedia' of undefined
Итак, я сделал условие, но с той же ошибкой. Что я делаю неправильно? Вот мой код:
import { Component } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
import { withSelect } from '@wordpress/data';
class PortfolioPostsEdit extends Component {
render() {
const { posts, className } = 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>
{post._embedded['wp:featuredmedia'] &&
<div className="image">
<img src={post._embedded['wp:featuredmedia'[0].source_url} />
</div>
}
</article>
))}
</div>
: <div>{__("No Posts Found", "my-blocks")}</div>
}
</>
)
}
}
export default withSelect(
(select, props) => {
return {
posts: select('core').getEntityRecords('postType', 'my_portfolio', 'per_page: 20', '_embed: true')
}
}
)(PortfolioPostsEdit);
Я не могу понять, почему мое состояние не работает:
{post._embedded['wp:featuredmedia'] &&
<div className="image">
<img src={post._embedded['wp:featuredmedia'[0].source_url} />
</div>
}
Может кто-нибудь помочь мне, пожалуйста? Спасибо.