WordPress插入带查询字符串的URL图片失败问题排查
问题解决:带查询字符串的图片URL无法插入
问题原因
你当前代码里用basename($image_url)获取文件名时,一旦URL带查询字符串(比如?rev=2780533),basename会把查询字符串也包含进文件名,生成类似screenshot-1.png?rev=2780533的文件名。这种带特殊字符的文件名会导致wp_upload_bits无法正常处理,最终插入失败。
解决方案
先解析URL,提取不含查询字符串的文件路径,再获取正确的文件名。可以用WordPress内置的wp_parse_url函数拆分URL,提取路径部分后再取basename。
修改后的代码
$image_url = 'https://ps.w.org/custom-upload-folder/assets/screenshot-1.png?rev=2780533'; if ( ! class_exists( 'WP_Http' ) ) { require_once ABSPATH . WPINC . '/class-http.php'; } $http = new \WP_Http(); $response = $http->request( $image_url ); if( is_wp_error( $response ) || $response['response']['code'] != 200 ) { return false; } // 解析URL,提取路径部分获取正确文件名 $url_parts = wp_parse_url($image_url); $file_name = basename($url_parts['path']); $mirror = wp_upload_bits( $file_name, null, $response['body'] ); if ( ! empty( $mirror['error'] ) ) { return false; }
内容的提问来源于stack exchange,提问作者Litalino
相关产品推荐
相关产品推荐

