vvv3/wp-responsive-images 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

vvv3/wp-responsive-images

Composer 安装命令:

composer require vvv3/wp-responsive-images

包简介

WordPress responsive images easily

README 文档

README

A library for easy introduction of Responsive Images to WordPress site.

Requirements

Installation

Clone WP Responsive Images library or install with composer:

$ composer require vvv3/wp-responsive-images

How to use

The library contains classes and helpers for easy introduction of Responsive Images to a WordPress site.

ImgUtils::resizeImg()

The \WPRI\ImgUtils::resizeImg method returns a link to the modified image according to the passed parameters.

Usage:

 <img src="<?php echo ImgUtils::resizeImg( $url, $width, $height, $crop ); ?>" >
  • $url - URL to image file to resize
  • $width - width value, integer
  • $height - height value, integer
  • $crop - bool flag crop or not

Returns: string resized image url

Example:

use WPRI\ImgUtils;
...
<img src="<?php echo ImgUtils::resizeImg( get_the_post_thumbnail_url( get_the_ID(), 'full' ), 380, 250, true ); ?>" >

ImgUtils::imgForPost, ImgUtils::pictureForPost

Helpers ImgUtils::imgForPost and ImgUtils::pictureForPost return a Responsive <img> or <picture> tag by post Id. You may set list of media queries with image with for this query, double pixel ratio, aspect ratio for the images, loading="lazy" native attribute or any other additional attribute.

Usage:

ImgUtils::imgForPost(
    int $postId,
    array $mqWithWidth = [],
    bool $pixelRatio2x = false,
    int|float|null $aspectRatio = null,
    bool $lazy = false,
    array $attrs = [])

ImgUtils::pictureForPost(
    int $postId,
    array $mqWithWidth = [],
    bool $pixelRatio2x = false,
    int|float|null $aspectRatio = null,
    bool $lazy = false,
    array $attrs = [])

Returns:

string <img> or <picture> tag accordingly or empty string on error

Example:

echo ImgUtils::imgForPost(
		get_the_ID(),
		[   // format: ['media-query' => width-in-px(int), ... , default-width-in-px(int) ]
			'(min-width: 1200px)' => 730,
			'(min-width: 768px)'  => 690,
			545, // dafault width, if no media query aplied
		],
		false,
		16/9,
		true,
		['class' => 'my-class']
	);

echo ImgUtils::pictureForPost(
		get_the_ID(),
		[
			'(max-width: 767px)'  => 545,
			'(max-width: 1199px)' => 690,
			730
		] );

ImgUtils::imgByAttachmentId, ImgUtils::pictureByAttachmentId

Helpers ImgUtils::imgByAttachmentId and ImgUtils::pictureByAttachmentId return a Responsive <img> , <picture> tag by attachment Id.

Also you can do any combination of parameters of Picture or Img responsive tags with WPRI\ResponsiveImages\ classes :

if ( has_post_thumbnail( $postId ) ) {
    try {
        $originUrl = get_the_post_thumbnail_url( $postId, 'full' );
        $resizer   = Resizer::makeWithUrl( $originUrl );
        $picture =
            Picture::make(
                $originUrl, // original url for default img tag
                'customAlt', // alt for default img tag
                null, // width attribute, by default as at $originUrl image
                null, // height attribute, by default as at $originUrl image
                [     // sourses
                    Source::make(
                       [ // SrcsetItems
                        SrcsetItem::makeWithResize( $resizer->setWidth( 730 ), '1x' ),
                        SrcsetItem::makeWithResize( $resizer->setWidth( 730 * 2 ), '2x' ),
                    ],
                        [], // may add sizes
                        '(min-width: 1200px)', // may add media
                        'image/jpeg'  // may add image mime-type
                    ),

                    Source::make( [
                        SrcsetItem::makeWithResize( $resizer->setWidth( 690 ), '1x' ),
                        SrcsetItem::makeWithResize( $resizer->setWidth( 690 * 2 ), '2x' ),
                    ],
                        [],
                        '(min-width: 768px)'
                    ),

                    Source::make( [
                        SrcsetItem::makeWithResize( $resizer->setWidth( 545 ), '1x' ),
                        SrcsetItem::makeWithResize( $resizer->setWidth( 545 * 2 ), '2x' ),
                    ] ),
                ] )
                   ->setPictureAttr( 'class', 'custom-picture-class' )
                   ->setPictureAttr( 'data-some', 'custom-picture-attr' )
                   ->setImgAttr( 'class', 'custom-img-class' )
                   ->setImgAttr( 'data-some', 'custom-img-attr' )
                   ->render();
    } catch ( \Exception $ex ) {
        error_log( "\nFile: {$ex->getFile()}\nLine: {$ex->getLine()}\nMessage: {$ex->getMessage()}\n" );
        $picture = '';
    }
    echo $picture;
}

vvv3/wp-responsive-images 适用场景与选型建议

vvv3/wp-responsive-images 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.49k 次下载、GitHub Stars 达 2, 最近一次更新时间为 2024 年 01 月 13 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「wordpress」 「Responsive Images」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 vvv3/wp-responsive-images 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 vvv3/wp-responsive-images 我们能提供哪些服务?
定制开发 / 二次开发

基于 vvv3/wp-responsive-images 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 2.49k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 2
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-01-13