任何人都可以帮助解决以下问题吗?
我正在尝试更改子主题中主题生成的自定义缩略图大小之一,我已将以下内容添加到子主题中的functions.php中:
add_theme_support( 'post-thumbnails' );
remove_image_size( 'sela-grid-thumbnail' );
add_image_size( 'sela-grid-thumbnail', 242, 242, true );
paren主题的原始功能是:
add_theme_support( 'post-thumbnails' );
// Post thumbnails
set_post_thumbnail_size( 820, 312, true );
// Hero Image on the front page template
add_image_size( 'sela-hero-thumbnail', 1180, 610, true );
// Full width and grid page template
add_image_size( 'sela-page-thumbnail', 1180, 435, true );
// Grid child page thumbnail
add_image_size( 'sela-grid-thumbnail', 360, 242, true );
// Testimonial thumbnail
add_image_size( 'sela-testimonial-thumbnail', 90, 90, true );
但是我的'sela-grid-thumbnail'图像仍然以父主题的functions.php的原始大小出现 - 谁能告诉我为什么?我错过了什么吗?谢谢
答案 0 :(得分:1)
第1步:在父级后加载新尺寸
您需要确保在父级声明之后重新定义图像大小。那是什么意思?
调用add_image_size()
时,它所做的就是获取参数并将其存储到名为$_wp_additional_image_sizes
的全局中,该名称由您提供的名称键入。如果你有密钥,你可以覆盖参数(请记住以后这一点。)
让我们来看看加载顺序。 WordPress加载插件,然后加载子主题,然后加载父主题。考虑一下。您想要更改父正在创建的默认图像大小。对?这意味着:在您尝试更改父主题之前,需要先运行父主题。
检查您的子主题,并确保在父主题添加后重新定义图像大小。
第2步:您无需将其删除
您无需删除图像尺寸。相反,只需运行add_image_size
就可以了。
为什么呢?请记住,我在上面说过,当运行add_image_size
时,WordPress会覆盖您调用图像大小的名称所存储的内容。当您在子主题中调用它时,它将覆盖父主题$_wp_additional_image_sizes
中存储的父主题。
为了帮助您想象这一点,这里是来自WordPress核心的代码:
function add_image_size( $name, $width = 0, $height = 0, $crop = false ) {
global $_wp_additional_image_sizes;
$_wp_additional_image_sizes[ $name ] = array(
'width' => absint( $width ),
'height' => absint( $height ),
'crop' => $crop,
);
}
如果名称已存在,您是否会看到它会被覆盖?否则,它会将其添加为新尺寸。
您希望何时使用remove_image_size()
删除图片尺寸?
当您不重新定义尺寸时,请执行此操作。你只想完全删除它。
第3步:需要重新生成现有图片
添加新图片尺寸时,媒体库和wp-content/uploads
中的现有图片不会自动生成新尺寸。添加的所有新图像都将以新尺寸存储。
我的意思是什么?
声明新的图像尺寸时,所有新图像都存储在uploads
文件夹中,并带有每个声明的尺寸。打开文件夹看看。您将看到原始图像文件,然后是附加文件,每个尺寸都附加为后缀。 WordPress负责调整大小,然后将每个图像大小存储到Uploads
文件夹中。
如何重新生成现有图片
好的,如何重新生成所有现有图像以获得新尺寸?我使用Viper的Regenerate Thumbnails plugin。它将遍历所有图像,然后创建新的尺寸。
如何验证您的新尺寸是否已注册?
注册存储在全局变量$_wp_additional_image_sizes
中,并按您提供的名称键入,即'sela-grid-thumbnail'
。要查看它是否已注册,您可以执行以下操作:
add_action('loop_start', 'check_if_image_size_is_registered');
/**
* Check if the image size has been registered when the
* Loop first starts.
*
* @since 1.0.0
*
* @return void
*/
function check_if_image_size_is_registered() {
global $_wp_additional_image_sizes;
if ( ! isset( $_wp_additional_image_sizes['sela-grid-thumbnail'] ) ){
die('nope, not registered');
}
echo '<pre>';
var_dump( $_wp_additional_image_sizes['sela-grid-thumbnail'] );
echo '</pre>';
die('yes, it is registered');
}
如果已注册,则大小将回显到浏览器。您可以检查它们以确保它们是您想要的尺寸,即242 x 242。
它是否回响了242 x 242尺寸?
add_image_size()
的顺序。您已检查过上方并正确注册了图像尺寸。但是,如果您看到的图像在浏览器中的大小不是242x242,您会怎么做?
这是一个不同的问题。它可能是:
the_post_thumbnail()
。第一个参数是大小,即'sela-grid-thumbnail'
。检查您要调用的代码以显示帖子缩略图。确保指定尺寸。-242x242.jpg
后缀。 当您渲染图像并将其设置为'sela-grid-thumbnail'
时,WordPress会从uploads
文件夹中抓取相应的文件。假设图像是my-cool-background.jpg
。 WordPress会抓住my-cool-background-242x242.jpg
。
您可以通过在Chrome或Firefox中打开开发者工具来查看此内容。检查浏览器中是否有正确的图像文件,这意味着它上面有-242x242.jpg
后缀。