古登堡选择摘录、使用生成的摘录或使用更多块摘录

时间:2021-02-23 作者:Leadhood

我正试图将摘录作为占位符添加到古腾堡提要栏的描述字段中。问题是,当没有手动添加的摘录时,占位符将为空。

有没有办法:

获取自动生成的摘录这是我的withSelect代码:

    withSelect( function( select, props ) {
        return {
            metaValue: select( \'core/editor\' ).getEditedPostAttribute( \'meta\' )[ props.metaKey ],
            metaExcerpt : select( \'core/editor\' ).getEditedPostAttribute( \'excerpt\' ),  
            metaContent : select( \'core/editor\' ).getEditedPostAttribute( \'content\' ),
        }
    } ) )( function( props ) {
        return el( TextareaControl, {
            label: props.title,
            value: props.metaValue,
            placeholder: props.metaExcerpt ? (props.metaExcerpt) : (props.metaContent), 
            help: props.metaExcerpt ? (\'\') : (\'There was no excerpt found\'),
            onChange: function( content ) { 
                props.setMetaValue ( content );
            },
        });
        }
    );   

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

获取自动生成的摘录

默认情况下,REST API始终包含自动生成的摘录,因此请尝试getEntityRecord() 像这样:

但请注意,如果用户编辑了实际摘录(即设置侧栏中的“摘录”面板,而不是您的metaExcerpt 值),然后currentExcerpt 还将使用用户刚刚编辑的摘录。

withSelect( function( select, props ) {
    const _post = select( \'core/editor\' ).getCurrentPost();
    const post = select( \'core\' ).getEntityRecord( \'postType\', _post.type, _post.id );

    return {
        metaValue: select( \'core/editor\' ).getEditedPostAttribute( \'meta\' )[ props.metaKey ],
        metaExcerpt : select( \'core/editor\' ).getEditedPostAttribute( \'excerpt\' ),
        metaContent : select( \'core/editor\' ).getEditedPostAttribute( \'content\' ),
        currentExcerpt : post ? post.excerpt.rendered : \'\',
    };
} ... your code.
然后使用TextareaControl, 使用placeholder: props.metaExcerpt || props.currentExcerpt.