在 WooCommerce 中禁用原始图像裁剪

Posted

技术标签:

【中文标题】在 WooCommerce 中禁用原始图像裁剪【英文标题】:Disable original image crop in WooCommerce 【发布时间】:2016-12-13 04:56:36 【问题描述】:

然后是所有产品的纵向图像,根据我的主题设计,我必须将所有图像显示在一个方形框中。所以所有图像都被裁剪并显示。

如何在 woocommerce 中禁用原始图像裁剪?

因为我在裁剪 WooCommerce 过程时遇到问题:

原始人像图片

Woocommerce 裁剪图像,例如:

那么我该如何解决这个问题,就像原始图像一样,停止裁剪由 WooCommerce 调整大小的缩略图?

【问题讨论】:

【参考方案1】:

转到 woocommerce > 设置 > 产品 (标签) > 显示 (子标签)

然后在页面底部的“产品图片”中,禁用硬裁剪选项并保存更改

然后您需要使用 Regenerate Thumbnails 插件重新生成您的产品图片:

安装并激活Regenerate Thumbnails插件。 进入“工具”菜单,您会发现“重新生成缩略图”项目页面。 按重新生成所有缩略图(这将重新生成您的 WordPress 网站的所有缩略图图像。 在 WordPress 媒体库中(在列表视图中),您可以一张一张地重新生成缩略图。

使用 php 替代

有时在某些主题中,这是硬编码的设置。因此,您可以使用此代码 sn-p 更改它们,将其粘贴到活动子主题或主题的 function.php 文件中:

function yourtheme_woocommerce_image_dimensions() 
    global $pagenow;

    if ( ! isset( $_GET['activated'] ) || $pagenow != 'themes.php' ) 
        return;
    
    $catalog = array(
        'width'     => '300',   // px
        'height'    => '300',   // px
        'crop'      => 0 // Disabling Hard crop option.
    );
    $single = array(
        'width'     => '150',   // px
        'height'    => '150',   // px
        'crop'      => 0 // Disabling Hard crop option.
    );
    $thumbnail = array(
        'width'     => '90',   // px
        'height'    => '90',   // px
        'crop'      => 0 // Disabling Hard crop option.
    );
    // Image sizes
    update_option( 'shop_catalog_image_size', $catalog );       // Product category thumbs
    update_option( 'shop_single_image_size', $single );      // Single product image
    update_option( 'shop_thumbnail_image_size', $thumbnail );   // Image gallery thumbs

add_action( 'after_switch_theme', 'yourtheme_woocommerce_image_dimensions', 1 );

您可以注释/取消注释代码(或删除某些部分)以满足您的需求。此代码将覆盖 WooCommerce 设置 > 产品 > 显示(产品图像)中的定义选项。

激活: 您需要将活动主题切换到另一个主题,然后再切换回来以激活它。

您可能还需要使用 Regenerate Thumbnails 插件...

重新生成产品图片

【讨论】:

谢谢,但是如果不添加插件怎么能做到这一点,因为在我的网站中已经有更多插件,如果我要添加新插件,那么网站性能可能会很低或很慢。 谢谢,但我的问题没有解决,因为我不想在站点中添加新的更多插件,我的站点已经用不同的插件变慢了,所以任何想法都可以解决这个问题。所以告诉我。我也可以更改我的核心文件,您只需告诉我其他选项,谢谢。 @BhavikHirani 重新生成缩略图的唯一方法是使用插件(wordpress 和 woocommerce 推荐该插件)。我有 25 个为客户运行的电子商务网站都启用了这个插件。 而且没有任何减速。一次重新生成所有拇指时只需要一些服务器资源(但您只能一个一个地重新生成必要的拇指)。这是一个后端插件,所以不会慢下来。当您完成重新生成时,您可以根据需要禁用/删除它。 @BhavikHirani 如果您的网站速度很慢,这可能来自许多不同的原因(不仅是插件)。它可以是主题本身、商店中的产品数量(大数据库)、托管服务器、您的 wordpress 配置内存、php 自定义、错误的缓存/压缩配置。还有一些糟糕的插件或一些用于 SEO (YOAST) 的插件、多语言插件 (WPML)、一些安全插件。 @BhavikHirani 唯一的选择:使用插件重新生成,您可以替换/重新上传仅受影响的产品图片通过这种裁剪【参考方案2】:

由于 WooCommerce 菜单随上一个版本而更改,因此此“显示”菜单不再存在。

现在您可以在以下位置找到它:

-> 自定义(当您在前面时位于 Wordpress 的顶部栏中)

->WooCommerce

-> 产品图片

-> 选择“Uncropped”选项,然后点击“Publish”保存。

不要忘记使用此插件重新生成上一篇文章中提到的缩略图:https://wordpress.org/plugins/regenerate-thumbnails/

【讨论】:

在最新版本的 woocommerce 中选择未裁剪会强制您使用全尺寸图像,这很烦人。 @BenBely,我没有在我的 wordpress 中看到自定义选项。你在哪里找到这个? @JamieMarshall 您可以在管理端的 Wordpress 菜单中找到它。外观 -> 自定义。【参考方案3】:

如果要通过代码设置,在functions.php文件中添加这个sn-p:

// set thumbnails size in shop page
add_filter( 'woocommerce_get_image_size_thumbnail', 'ci_theme_override_woocommerce_image_size_thumbnail' );
function ci_theme_override_woocommerce_image_size_thumbnail( $size ) 
    // Catalog images: specific size
    return array(
        'width'  => 150,
        'height' => 150,
        'crop'   => 0, // not cropped
    );

正如Silver Moon 提到的,如果您使用此选项,它将强制您共享所有图像的大小相同。我找到了解决此问题的解决方法:我正在使用 Woo Align Buttons 插件来对齐“添加到购物车”按钮并将这些 CSS 属性添加到商店页面中的图像中:

height: 150px;
vertical-align: middle;
display: flex;

如果您想在其他页面(而不是商店页面)上使用它,请按照以下指南操作:https://docs.woocommerce.com/document/image-sizes-theme-developers/

【讨论】:

以上是关于在 WooCommerce 中禁用原始图像裁剪的主要内容,如果未能解决你的问题,请参考以下文章

在图像 Python 中裁剪自定义区域 [关闭]

在裁剪区域外禁用鼠标单击

我只想将裁剪后的图像保存到图库中。但它保存了原始的完整图像。如何只保存裁剪的图像?

如何使用原始文件名保存裁剪的图像?

使用 Python - 如何在不超过原始图像大小的情况下调整裁剪图像的大小以满足纵横比

如何在不保存原始图像的情况下保存图像 URL 的裁剪图像? (在 Rails 中使用 Paperclip 或其他插件)