Wordpress / WooCommerce是否删除默认图像大小?

时间:2019-05-14 14:32:37

标签: php wordpress woocommerce

是否可以从Wordpress中删除默认图像?更具体地说,那些是由WooCommerce创建的?我正在构建一个完全自定义的主题,对于该主题,我不需要任何WC图像大小,因此我宁愿不必将其存储在我们的服务器上。我已经在下面的代码中试用了Codex remove_image_size(),但是这破坏了媒体库。

谢谢。

// Remove default WC image sizes
function wpdocs_remove_plugin_image_sizes() {
    remove_image_size( 'woocommerce_thumbnail' );
    remove_image_size( 'woocommerce_single' );
    remove_image_size( 'woocommerce_gallery_thumbnail' );
    remove_image_size( 'shop_catalog' );
    remove_image_size( 'shop_single' );
    remove_image_size( 'shop_thumbnail' );
}
add_action('init', 'wpdocs_remove_plugin_image_sizes');

2 个答案:

答案 0 :(得分:1)

经过进一步调试后,发现上面的代码确实可以工作,但是被同一文件中的另一段代码破坏了。

我在网上找不到太多引用此请求的信息,所以将答案留在这里寻找其他任何人。

放置在functions.php中

// Remove default WC image sizes
function remove_wc_image_sizes() {
    remove_image_size( 'woocommerce_thumbnail' );
    remove_image_size( 'woocommerce_single' );
    remove_image_size( 'woocommerce_gallery_thumbnail' );
    remove_image_size( 'shop_catalog' );
    remove_image_size( 'shop_single' );
    remove_image_size( 'shop_thumbnail' );
}
add_action('init', 'remove_wc_image_sizes');

这也适用于Wordpress中任何其他注册的图像尺寸,您所需要做的就是找出要删除的图像尺寸的名称,并将其添加到上面的列表中。上面的列表当前删除了所有WooCommerce图片大小,因此只剩下Wordpress默认大小和您可能定义的其他自定义大小。

如果不确定主题中注册了什么大小,请使用以下代码在管理员中显示array()列表,以帮助您轻松识别。

放置在functions.php中

add_action( 'admin_init', 'theme_additional_images' );
// Display all image sizes other than the custom, default, thumbnail, medium and large

function theme_additional_images() {
    global $_wp_additional_image_sizes;
    $get_intermediate_image_sizes = get_intermediate_image_sizes();

    echo '<pre>' . print_r($_wp_additional_image_sizes) . '</pre>';
}

答案 1 :(得分:0)

我只想对代码表示感谢,并补充说我已经修改了它,以便在所有情况下都删除 WooCommerce 图像大小,除非将媒体添加到产品本身。在这种情况下,上传到帖子编辑屏幕上的产品帖子的图片仍将具有 WooCommerce 尺寸,而网站上其他地方的所有其他上传则不会。我需要此功能,因为我的小型 WooCommerce 商店与主站点的其余部分使用不同的图像大小。我不希望 WooCommerce 大小为网站上的每个其他图像弄乱服务器。我只是分享这个答案,以防它对其他人有帮助:) `

function remove_wc_image_sizes() {
  if ( get_post_type($_REQUEST['post_id']) != "product") {
    remove_image_size( 'woocommerce_thumbnail' );
    remove_image_size( 'woocommerce_single' );
    remove_image_size( 'woocommerce_gallery_thumbnail' );
    remove_image_size( 'shop_catalog' );
    remove_image_size( 'shop_single' );
    remove_image_size( 'shop_thumbnail' );
  }
}
add_action('init', 'remove_wc_image_sizes');