如何获取中等大小特色图片的相对URL?

时间:2014-07-04 作者:Advanced SEO

如何显示特色图片(中等大小)相对URL(相对于网站根)?

我需要这样的东西:uploads/214/07/image-600x400.png

我试过这个:

if ( has_post_thumbnail()) {
    $medium_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), \'medium\');
    echo $medium_image_url[0];  
}
它工作得很好,我得到了中等大小的特色图像路径,但也有域名,我需要它没有域名。

我也这样试过:

global $wpdb;
$the_thumbnail_id = get_post_thumbnail_id($post->ID);
$the_thumbnail_name = $wpdb->get_var( "SELECT meta_value FROM $wpdb->postmeta WHERE post_id = \'$the_thumbnail_id\' AND meta_key = \'_wp_attached_file\'" );
//
echo $the_thumbnail_name;
这很好,我得到的只是相对路径,但“完整”大小的特征图像路径,我需要“中等”大小的特征图像路径。

有人能帮我重新设计(为“中等”尺寸添加一些参数)第二个函数吗,或者一些新方法?

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

您的第一个代码片段走上了正确的轨道-从那里很容易删除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”目录结构。)

SO网友:senectus

无需str\\u replace(),只需将完整的绝对URL传递给wp_make_link_relative()。

内置函数更简单,还可以灵活地处理尾部斜杠、home\\u url和site\\u url不同的情况以及各种其他边缘情况。

结束

相关推荐

如何使用图片上传的getimageSize()?

我需要通过media box检查要上载的图像的分辨率,然后将其上载到自定义目录。作为起点,我使用了How Can I Organize the Uploads Folder by Slug (or ID, or FileType, or Author)?其中一部分是这样的:function wpse_25894_custom_upload_dir($path) { $use_default_dir = ( isset($_REQUEST[\'post_id\'] )