javascript - 古腾堡javascript获取媒体srcset

标签 javascript wordpress wordpress-gutenberg srcset

在 WordPress 中,使用 wp_get_attachment_image_srcset 很容易获得保存在 WordPress 中的图像 srcsetsizes功能。我需要在 javascript/react 的 block 编辑器端拥有该功能。那可能吗?

我期望的是一个接受媒体 ID 并以某种方式返回 srcset 的函数。如果那不可能,我怎么能实现一个 rest api 端点呢?还是有另一种方法可以将函数值从 php 传递到 js?

由于某些与此处无关的原因,我无法使用动态 php block 。

最佳答案

我在这里分享了我的解决方案,因为我通过搜索类似问题的解决方案看到了这篇文章:我正在寻找一种解决方案来获取 srcset 属性和完整生成的“img”标签,但来自“媒体” ' MediaReplaceFlow 组件返回的对象(不仅通过附件 ID)。它可能通过使用 wp.data.select( 'core').getMedia(media_id) 获取媒体对象来适应您的问题。

此媒体对象已包含一个“sizes”数组,其中包含某些图像尺寸的图像 URL。但这还不够,因为很难为图像标签构建 srcset ans size 属性。因此,经过多次研究,我发现了一个非常有用的 php 过滤器:wp_prepare_attachment_for_js

所以有了这个过滤器,我写了这段 PHP 代码:

function imageTagForJs( $response, $attachment ) {
    foreach ( $response['sizes'] as $size => $datas ) {
      $response['sizes'][$size]['tag']    = wp_get_attachment_image( $attachment->ID, $size );
      $response['sizes'][$size]['srcset'] = wp_get_attachment_image_srcset( $attachment->ID, $size );
    }
    return $response;
  }
add_filter( 'wp_prepare_attachment_for_js', 'imageTagForJs', 10, 2 );

现在,在“media”JS 对象中,每个尺寸都有两个新属性:tag 和 srcset。我现在可以通过简单地使用 media.sizes.medium.tag 在 js 中获取我的 img 标签。

重要:默认情况下,media.sizes 数组仅包含内置图像尺寸(缩略图、中等),但不包含自定义图像尺寸。您可以使用 image_size_names_choose 简单地添加自定义尺寸过滤器。

关于javascript - 古腾堡javascript获取媒体srcset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61163576/

相关文章:

css - wordpress gutenberg alignwide 和 alignfull 问题

javascript - 如何在 AJAX 加载选项卡中初始化 jquery 函数?

javascript - 如何在所有浏览器中实现一致的布局?

javascript - 创建 Wordpress 插件并加载外部脚本

javascript - Wordpress 插件 "infinite scroll"(jQuery) hack 帮助

javascript - 古腾堡编辑器滚动 block 进入 View

wordpress - 如何访问古腾堡 block 中的高级自定义字段值?

javascript - 在 leaflet-geoman 中绘制圆时,有什么方法可以限制圆的大小吗?

javascript - 在应用新变换之前停止所有变换

wordpress - 使用htaccess将wordpress主页重定向到子页面