humanmade / tachyon-plugin
重写WordPress图像URL以使用Tachyon
Requires (Dev)
- phpunit/phpunit: ^7
README
Tachyon 是一个图像缩放服务,旨在与 Amazon S3 作为图像后端、AWS Lambda(或任何 node.js 服务器)一起使用,使用 sharp 处理图像,并位于 CDN(如 CloudFront 或 CloudFlare)之后。
此插件负责修改 WordPress 图像 URL 以使用 Tachyon 服务实例。
安装
- 上传并启用此插件。
- 将
define( 'TACHYON_URL', 'https://your.tachyon.url/path/to/uploads' )
添加到您的wp-config.php
文件。
使用方法
通常以上步骤就足够了,但是您可以使用以下面向公众的函数和过滤器。
函数
tachyon_url( string $image_url, array $args = [] )
此函数返回托管在 Amazon S3 上的给定图像的 Tachyon URL。
$image_url = 'https://my-bucket.s3.us-east-1.amazonaws.com/path/to/image.jpg'; $args = [ 'resize' => '300,300', 'quality' => 90 ]; $url = tachyon_url( $image_url, $args );
过滤器
以下过滤器允许您修改插件输出和行为。
tachyon_disable_in_admin
默认为 true
。您可以通过向插件或主题的 functions.php
中添加以下代码来覆盖此设置
add_filter( 'tachyon_disable_in_admin', '__return_false' );
tachyon_override_image_downsize
默认为 false
。提供了一种防止 Tachyon 应用于从 WordPress 核心检索到的图像的方法,您可能希望在特定情况下手动使用 tachyon_url()
。
add_filter( 'tachyon_override_image_downsize', '__return_true' );
tachyon_skip_for_url
允许跳过给定图像 URL 的 Tachyon URL。默认为 false
。
add_filter( 'tachyon_skip_for_url', function ( $skip, $image_url, $args ) { if ( strpos( $image_url, 'original' ) !== false ) { return true; } return $skip; }, 10, 3 );
tachyon_pre_image_url
过滤 Tachyon 图像 URL,排除查询字符串参数。您可能使用此功能来将 Tachyon 请求跨多个服务实例进行分片,例如。
add_filter( 'tachyon_pre_image_url', function ( $image_url, $args ) { if ( rand( 1, 2 ) === 2 ) { $image_url = str_replace( TACHYON_URL, TACHYON_URL_2, $image_url ); } return $image_url; }, 10, 2 );
tachyon_pre_args
过滤附加到 Tachyon 图像 URL 的查询字符串参数。
add_filter( 'tachyon_pre_args', function ( $args ) { if ( isset( $args['resize'] ) ) { $args['crop_strategy'] = 'smart'; } return $args; } );
tachyon_remove_size_attributes
默认为 true
。默认情况下,移除图像标签上的 width
和 height
属性,以防止在某些异常情况下发生纵横比扭曲,在这些情况下 srcset
大小具有不同的纵横比。
add_filter( 'tachyon_remove_size_attributes', '__return_true' );
鸣谢
由 Human Made 为高流量和大规模网站创建,例如 Happytables。我们在每月有数百万页面浏览量的网站上运行 Tachyon,并为数千个网站提供服务。
由 Joe Hoyle 编写和维护。
Tachyon 是由 Automattic Inc. 的 Photon 分支出来的。由于 Tachyon 不是一个通用的图像缩放器,而是使用 Amazon S3 中的媒体库,因此它与 Photon 的使用场景不同。
想加入这个有趣的团队吗? 加入我们,成为人类吧!