チュートリアル「動的ブロックの作成」では、最近の投稿のリストを Gutenberg ブロックにロードするために使用するコードは次のとおりであると説明されています。
var el = wp.element.createElement,
registerBlockType = wp.blocks.registerBlockType,
withSelect = wp.data.withSelect;
registerBlockType( 'my-plugin/latest-post', {
...
edit: withSelect( function( select ) {
return {
posts: select( 'core' ).getEntityRecords( 'postType', 'post' )
};
} )( function( props ) {
if ( ! props.posts ) {
return "Loading...";
}
if ( props.posts.length === 0 ) {
return "No posts";
}
var className = props.className;
var post = props.posts[ 0 ];
return el(
'a',
{ className: className, href: post.link },
post.title.rendered
);
} ),
...
} );
このコードを試してみましたが、ブロックには常に「読み込み中...」と表示されます。
props.posts
常にnull
orundefined
であり、クエリが何も返さないようです。
明らかに、WordPress の組み込みの最近の記事ブロックを使用すると、すべてうまく機能し、リストが正しく読み込まれます。
組み込みブロックのコードを確認すると、まったく同じセレクターを使用しているようです (ブロック自体の構成からいくつかのパラメーターが追加されています)。
...
export default withSelect( ( select, props ) => {
const { postsToShow, order, orderBy, categories } = props.attributes;
const { getEntityRecords } = select( 'core' );
const latestPostsQuery = pickBy( {
categories,
order,
orderby: orderBy,
per_page: postsToShow,
}, ( value ) => ! isUndefined( value ) );
return {
latestPosts: getEntityRecords( 'postType', 'post', latestPostsQuery ),
};
} )( LatestPostsEdit );
何が起こっているのかについてのアイデアはありますか?
問題をデバッグするにはどうすればよいですか?