在 Wordpress 中定义新的裁剪图像大小

Posted

技术标签:

【中文标题】在 Wordpress 中定义新的裁剪图像大小【英文标题】:Define a new cropping image size in Wordpress 【发布时间】:2014-10-01 13:14:16 【问题描述】:

在 Wordpress 中,我需要在上传文件夹中生成并创建一个新的裁剪图像大小:

宽度=205px 高度=120px

在我的function.php里面是我的代码:

// Call function on after setup
add_action( 'after_setup_theme', 'theme_setup_img' );
function theme_setup_img() 
    add_theme_support( 'post-thumbnails' );
    add_image_size('search-thumb', 205, 120, true );
    // set_post_thumbnail_size( 205, 120, true );

但是,在上传文件夹中没有创建新的图像尺寸(只有默认的 WP 尺寸)。有什么解决办法吗?

注意:我使用的是默认主题和最新的 WP 版本

【问题讨论】:

这仅适用于新上传的内容。如果您还想调整现有图像的大小,则需要编写一个函数来遍历所有图像并重写图像。在this question 中查看我的答案。 Big square wordpress post thumbnails的可能重复 即使是新的上传,也不会生成新的图像大小。让你知道,我的图像是 2000 像素 x 1500 像素,所以裁剪应该可以工作。没装插件试过了,还是一样的问题。。。会不会是php版的? 【参考方案1】:

您的代码看起来正确。我的略有不同,我知道它有效:

if (function_exists('add_theme_support'))

  // Add Thumbnail Theme Support
  add_theme_support('post-thumbnails');
  add_image_size('large', 700, '', true); // Large Thumbnail
  add_image_size('medium', 250, '', true); // Medium Thumbnail

这是来自 Todd Motto 的 html5 Blank Theme。 Gerald 还提到编写一个脚本来重新渲染,但是有一个很棒的插件叫做Regenerate Thumbnails 可以做同样的事情。

【讨论】:

即使使用您的代码,我也不会在上传文件夹中创建新图像 插件问题【参考方案2】:

这可能是由于您在“after_setup_theme”操作中调用了新大小...我使用以下代码:

// Add custom image sizes
if( function_exists( 'add_image_size' ) ) 
    add_image_size( 'search-thumb', 205, 120, true );

而且它每次都可以工作...如果它在 functions.php 文件中,您不需要任何操作或挂钩来使其工作。

此外,您可以将其添加到functions.php,以便在将图像插入页面/帖子/任何地方时,使您的自定义尺寸显示在下拉菜单中:

// Functions to add custom image sizes to the media library thickbox area
// and put them into drop down
function my_insert_custom_image_sizes( $sizes ) 
    // get the custom image sizes
    global $_wp_additional_image_sizes;
    // if there are none, just return the built-in sizes
    if ( empty( $_wp_additional_image_sizes ) )
        return $sizes;
    // add all the custom sizes to the built-in sizes
    foreach ( $_wp_additional_image_sizes as $id => $data ) 
        // take the size ID (e.g., 'my-name'), replace hyphens with spaces,
        // and capitalise the first letter of each word
        if ( !isset($sizes[$id]) )
            $sizes[$id] = ucfirst( str_replace( '-', ' ', $id ) );
    
    return $sizes;

add_filter( 'image_size_names_choose', 'my_insert_custom_image_sizes' );

您将需要一个插件(我使用AJAX Thumbnail Rebuild)来调整在执行此代码之前已上传的旧图像的大小。

【讨论】:

感谢您的回复。为了让您知道,钩子在 function.php 之外很有用。【参考方案3】:

这里的问题是“Dynamic Image Resizer”插件。 Wordpress 4.0 打破了我的主题。

【讨论】:

以上是关于在 Wordpress 中定义新的裁剪图像大小的主要内容,如果未能解决你的问题,请参考以下文章

调整图像大小并裁剪为新的纵横比

wordpress 缩略图后裁剪问题。这甚至可能吗?

如何在 Wordpress 中更改默认图像缩略图大小

Wordpress 裁剪图像 - 无穷大

WordPress自动裁剪768w像素缩略图的解决办法

如何在 wordpress 的主页上显示裁剪的图像?