wordpress - 在古腾堡 block 的后端 View 中使用附件 ID 属性获取附件 URL

标签 wordpress wordpress-gutenberg gutenberg-blocks

如果古腾堡 block 存储了附件 ID 属性,是否有方法使用该 ID 动态获取特定缩略图大小的 URL?

属性将像这样存储在 block 中:

 imageID: {
     type: 'integer',
 },

这个想法是在古腾堡编辑器 View 中动态显示该图像。

最佳答案

几周前我遇到了这个问题。这让我困惑了一段时间,但你可以使用 withSelect()() 来做到这一点和 getMedia()。简而言之,我们必须从我们拥有的 ID 中获取媒体对象。在该对象内部查找缩略图对象。然后我们将获得 source_url 属性。您的文件应类似于:

// Block image preview
const blockEdit = createElement("div", null, 

    // If image defined, get the source_url
    const imageThumbURL = props.imageObj ? props.imageObj.media_details.sizes.thumbnail.source_url : null

    createElement("img", {
        src: imageThumbURL
    })
)

// Use withSelect(x)(y) to load image url on page load
const fieldData = withSelect( (select, props) => {
    // Get the image ID
    const imageId = props.attributes.imageID

    // Create "props.imageObj"
    return { 
        // If image defined, get the image "media" object
        imageObj: imageId ? select("core").getMedia(imageId) : null
    }
})(blockEdit)

wp.blocks.registerBlockType('plugin-namespace/block-name', {
    attributes: {
        imageID: {
            type: 'Number'
        }
    },
    edit: fieldData
}

上面的内容未经测试,但我使用该解决方案允许在使用其 ID 加载页面时加载我的媒体项目。希望这会有所帮助。

关于wordpress - 在古腾堡 block 的后端 View 中使用附件 ID 属性获取附件 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59668064/

相关文章:

WordPress Gutenberg,以编程方式更新帖子内容

php - 在 WooCommerce 中先显示当前类别,然后显示子类别

php - 通过foreach循环显示mysql的第二个值

wordpress - 在 Wordpress 主题中包含古腾堡 block

php - 显示自定义古腾堡 block 的预览图像

wordpress - 古腾堡 block : How to add RichText an to un-ordered list

php - 禁用 WooCommerce 中一系列产品 ID 的添加到购物车按钮

javascript - 如何点击iframe内的链接

wordpress-gutenberg - 附加 CSS 类不适用于自定义古腾堡 block

WordPress 古腾堡 : This block contains unexpected or invalid content