访问`Add_Image_Size()`生成的大小调整后的图片

时间:2015-01-31 作者:rtpHarry

我已经设置了一些短代码,以使用户更简单。它封装了一些引导标记,只允许您将h1, 一些img URL等,而不会离标记太近。

我最初想要的是让用户通过媒体库上传图像,然后获取图像url以调整我生成的大小。我以为这个以前在那里,但我找不到办法。

所以假设这是不可能的,有没有一种方法可以将urlhttp://www.devsite.co.uk/wp-content/uploads/2015/01/testupload.jpg 用户将其复制粘贴到快捷码中,然后使用WP函数获取columns-thumbnail 调整大小?

如果它不是内置的,我可以直接检查尺寸,但如果大小或WP生成文件名的方式在将来发生变化,这样做感觉很脆弱。

一些代码:

function roots_setup() {
  // snip

  // setup image sizes
  // http://codex.wordpress.org/Function_Reference/add_image_size
  add_image_size(\'triple-thumbnail\', 370, 222, true); // true = hard crop
  add_image_size(\'columns-thumbnail\', 200, 200, true);

  // snip
}
add_action(\'after_setup_theme\', \'roots_setup\');

function my_custom_sizes( $sizes ) {
    return array_merge( $sizes, array(
        \'triple-thumbnail\' => __( \'Triple Header Image\' ),
        \'columns-thumbnail\' => __( \'Columns Thumbnail\' )
    ) );
}
add_filter( \'image_size_names_choose\', \'my_custom_sizes\' );
短代码示例:

[column imageurl=\'http://www.example.co.uk/wp-content/uploads/2015/01/blinds-triple-vertical.jpg\' title=\'Vertical Blinds\']
我想象的东西可能已经在WP中的某个地方了:

$imageurl = \'http://www.example.co.uk/wp-content/uploads/2015/01/blinds-triple-vertical.jpg\';
$thumbnailurl = WP_get_image_resize_url($imageurl, \'columns-thumbnail\');
这是否存在?

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

图像URL是直接的。它们不是WP重写系统的一部分,它们不作为显式元数据存储,它们从不用于核心中的反向查找。

可以公平地尝试反转URL,请参阅Turn a URL into an Attachment / Post ID.

但这不是一个正常的工作流程,也不可靠。您还可以让用户在shortocode中放置附件ID(可能带有一点助手界面),并获得更可靠的代码流。

SO网友:Privateer

根据您添加的大小(以及image\\u size\\u names\\u choose filter),用户应该能够通过媒体库上载图像,然后在使用媒体按钮将图像放入内容时选择适当的图像大小。

当他们在media library viewer中时,应该能够单击图像,然后查看屏幕右下角区域,以查看可用的图像大小(如果内存可用,则下拉)。如果没有,可以检查右上角的“屏幕选项”设置,以确保没有隐藏图像大小选项。

结束

相关推荐

Extending the Audio Shortcode

目前,音频快捷码只允许四个属性,src, loop, autoplay 和preload. 然而,当你上传一个音频文件时,它附带了非常有用的元数据,如专辑的艺术、艺术家、年份等,如果它也能显示出来,那就太好了。我一直在寻找一种扩展音频短代码的方法,以便元数据也可以包含在短代码中。到目前为止,我偶然发现shortcode_atts_{$shortcode} 它可以用来过滤现有的短代码,但显然只能过滤现有属性,不能添加新属性。顺便说一句,我并不想创建一个新的短代码,而是要添加或扩展现有的短代码,这样用户就不必