在文本中嵌入图像,从 URL 中去除大括号 { } 字符

问题描述 投票:0回答:1

我们的图像和 PDF 位于服务器上的自定义位置。它们的 URL 包含一个名称中带有大括号的文件夹,如下所示:/{folder-name}/。我知道名称中带有大括号的文件夹不好,但我们现在坚持使用它。

上传图像后,“媒体”选项卡中图像显示的最终 URL 是正确的,并且包含大括号。当我尝试将图像嵌入到帖子中时,花括号会被去掉,就像这样 /folder-name/ 一样,最终的 URL 不再有效。预览帖子时图像已损坏。

显示嵌入过程的屏幕截图:

显示 WP Embed 叠加层的图像。此时图片URL仍然是正确的。

嵌入后,img 标签位于帖子中,但大括号已从图像路径 /folder-name/

中删除

问题 如何关闭在帖子中嵌入图像时发生的图像 URL 清理功能? 是否有一个函数可以强制嵌入使用原始附加图像 URL 而不是经过清理的版本?

我尝试在functions.php 文件中添加以下内容。没有任何效果:

add_filter( 'sanitize_url', static function( $filtered, $original_string ) { return $original_string; }, 10, 2 ); 

add_filter( 'sanitize_textarea_field', static function( $filtered, $original_string ) { return $original_string; }, 10, 2 );

我还查看了“wp_get_attachment_url”,但我不明白如何创建一个返回原始未修改 URL 的函数。这不行。

add_filter('wp_get_attachment_url', 'return_non_modified_url');
function return_non_modified_url($url) {
    return $original_string; 
}

感谢您的帮助。

wordpress image function url sanitize
1个回答
0
投票

此问题的根本原因是 WordPress 出于安全原因对 URL 进行清理,我们可以借助

wp_get_attachment_url
钩子来阻止 WordPress 执行此操作。

请将给定代码添加到主题的

functions.php
文件中。

add_filter( 'wp_get_attachment_url', 'preserve_embed_attachment_url', 10, 2 );

function preserve_embed_attachment_url( $url, $post_id ) {
    // Here we are getting the original URL directly from the database without modification.
    global $wpdb;
    $original_url = $wpdb->get_var( $wpdb->prepare("SELECT guid FROM $wpdb->posts WHERE ID = %d", $post_id) );

    // Here are returning the original attachment URL.
    return $original_url ? $original_url : $url;
}
© www.soinside.com 2019 - 2024. All rights reserved.