您的第一个代码片段走上了正确的轨道-从那里很容易删除url的一部分:检查WP存储为站点根目录的内容,然后使用php的字符串函数从图像url中删除该部分。
// inside the post loop, in a template file
if ( has_post_thumbnail()) {
$medium_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), \'medium\');
$domain = get_site_url(); // returns something like http://domain.com
$relative_url = str_replace( $domain, \'\', $medium_image_url[0] );
echo $relative_url;
}
如果希望此函数作为可重用函数存在:
// functions.php
function get_relative_thumb( $size ) {
global $post;
if ( has_post_thumbnail()) {
$absolute_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), $size);
$domain = get_site_url(); // returns something like http://domain.com
$relative_url = str_replace( $domain, \'\', $absolute_url[0] );
return $relative_url;
}
}
// in a template file
<?php
while (have_posts) : the_post();
// ... post loop content before the thumbnail
echo get_relative_thumb( \'medium\' );
// ... post loop content after the thumbnail
endwhile;
?>
(注意-此操作的结果可能仍然包括路径的“wp content/”部分;如果需要删除该部分,则只需从“upload”开始,只需在运行str\\u replace之前将“wp content”附加到$domain变量。(如果这是针对一般版本的,您应该使用wordpress的内置函数以编程方式获取路径,以防有人没有使用典型的“wp content”目录结构。)