使用@wordPress/create-block教程在自定义块前端输出中获取不正确的文件路径

时间:2021-10-05 作者:Chris

我正在关注官方的WordPress;创建块教程“;位于此处:https://developer.wordpress.org/block-editor/handbook/tutorials/create-block/

我将此作为插件的起点:npx @wordpress/create-block

我将它与本地by Fleel一起用于我的开发环境。除了我尝试在块的CSS中包含其他文件(如自定义字体文件或图像)外,大部分内容似乎都正常工作。这是本教程的一部分:https://developer.wordpress.org/block-editor/handbook/tutorials/create-block/block-code/

示例:

@font-face {
    font-family: Gilbert;
    src: url(./Gilbert-color.otf);
    font-weight: bold;
}
.wp-block-create-block-tdblocks {
    font-family: Gilbert;
    font-size: 64px;
    font-weight: bold;
    background-image: url(./map_bg.png);
    background-repeat: repeat;
}
因此,在插入建议的代码并运行npm run build, 构建过程生成的css文件会留下相对于当前网页URL的指向这些文件的链接,而不是指向相应插件文件夹中文件位置的链接。

下面是它给我的图像文件示例(自然显示为404错误):

https://taylor-design-starter-theme.local/sample-page/images/map_bg.f0104819.png
我希望它能给我这个:

https://taylor-design-starter-theme.local/wp-content/plugins/tdblocks/build/images/map_bg.f0104819.png
我已尝试调整;url(&Q);值,以查看这是否有帮助。喜欢src: url(../map_bg.png);src: url(map_bg.png); 但这似乎没有任何作用。

我错过什么了吗?或者有没有办法让它使用插件目录?

非常感谢。

编辑:这是我运行构建过程时生成的CSSnpm run build

@font-face{font-family:Gilbert;font-weight:700;src:url(fonts/Gilbert-color.02d3d364.otf)}.wp-block-create-block-tdblocks{background-image:url(images/map_bg.f0104819.png);background-repeat:repeat;font-family:sans-serif;font-size:64px;font-weight:700}

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

WordPress将该样式内联为优化:

呈现页面时,选择内联的样式表将添加到数组中。使用filesize调用检索它们的大小(这就是为什么需要路径数据),然后按大小升序排列数组(从小到大的样式表)。然后,我们开始从最小到最大内联这些资产,直到达到20kb的限制。

https://make.wordpress.org/core/2021/07/01/block-styles-loading-enhancements-in-wordpress-5-8/

您有多种选择:

将此作为Trac的一个bug提出,使样式表更大或在其他地方添加其他内联并达到20kb限制的样式表,禁用样式内联

add_filter( \'styles_inline_size_limit\', \'__return_zero\' );
无论你做什么,you should still raise a bug ticket on WP core. 特别是关于具有相对URL的内联样式。

我也会在Gutenberg Github上提出一个bugblock.json 记录,因为最好有一种使用方法block.json 以及选择加入或退出,如果不编写PHP过滤器,这似乎是不可能的。如果你不提出这个问题,很可能没有人会意识到这个问题,这样的事情会更多。

SO网友:tiago calado

css将打开页面所在的链接,在本例中就是这个链接

https://taylor-design-starter-theme.local/sample-page/images

通过添加/image\\u名称。png与通过名为“的图像”在该目录中查找相同;image\\u名称。巴布亚新几内亚;。如果图像不在那里,它将无法工作。

我不知道如何在css中提供绝对路径,而不是url,只有在php中。然而,如果您将图像放在该路径中,wordpress/wp-content/plugins/tdblocks/build/images/与第一个url相同。它会起作用的。我知道这不是理想的答案,但它会很好地工作。

相关推荐

Broken Images and Style

将Wordpress移动到另一个帐户后,样式和图像将被破坏。我曾尝试禁用插件,检查并更新“插件”;上载“;数据库中的文件夹,检查文件夹和文件权限,重新保存永久链接,将代码添加到wp配置。。。没有人修复此问题。此处截图:https://prnt.sc/v9mxqt有什么建议吗谢谢