删除图像大小并在子主题中添加图像大小 funcions.php 无效
remove image size & add image size in child theme funcions.php not working
有人可以帮忙解决以下问题吗?
我正在尝试更改子主题中某个主题生成的自定义缩略图大小之一,我已将以下内容添加到子主题中的 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 的原始尺寸显示 - 谁能告诉我为什么?我错过了什么吗?谢谢
第 1 步:在父项之后加载您的新尺寸
您需要确保在 父项声明后 重新定义图像大小。那是什么意思?
当调用 add_image_size()
时,它所做的只是获取参数并将其存储到一个名为 $_wp_additional_image_sizes
的全局变量中,该变量由您为其指定的名称作为键值。如果你有密钥,你可以覆盖参数(记住这个以备后用)。
让我们来看看加载顺序。 WordPress 加载插件,然后是子主题,然后是父主题。考虑一下。您想要更改父级正在创建的默认图像大小。正确的?这意味着:父主题需要先 运行 才能尝试更改它。
检查您的子主题并确保在父主题添加之后重新定义图像大小。
第 2 步:您不需要删除它
您不需要删除图像尺寸。相反,只是 运行 和 add_image_size
一样。
为什么?记得我在上面说过,当 运行ning 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'
。检查您调用以呈现 post 缩略图的代码。确保指定大小。
- CSS 覆盖大小。在 Chrome 或 Firefox 中打开开发人员工具,检查图像的 URL 是否附加了
-242x242.jpg
后缀。
WordPress 如何呈现图像
当您渲染图像并将其设置为 'sela-grid-thumbnail'
大小时,WordPress 会从 uploads
文件夹中抓取适当的文件。假设图像是 my-cool-background.jpg
。 WordPress 会抓住 my-cool-background-242x242.jpg
.
您可以通过在 Chrome 或 Firefox 中打开开发人员工具来检查这一点。检查浏览器中是否存在正确的图像文件,这意味着它具有 -242x242.jpg
后缀。
有人可以帮忙解决以下问题吗?
我正在尝试更改子主题中某个主题生成的自定义缩略图大小之一,我已将以下内容添加到子主题中的 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 的原始尺寸显示 - 谁能告诉我为什么?我错过了什么吗?谢谢
第 1 步:在父项之后加载您的新尺寸
您需要确保在 父项声明后 重新定义图像大小。那是什么意思?
当调用 add_image_size()
时,它所做的只是获取参数并将其存储到一个名为 $_wp_additional_image_sizes
的全局变量中,该变量由您为其指定的名称作为键值。如果你有密钥,你可以覆盖参数(记住这个以备后用)。
让我们来看看加载顺序。 WordPress 加载插件,然后是子主题,然后是父主题。考虑一下。您想要更改父级正在创建的默认图像大小。正确的?这意味着:父主题需要先 运行 才能尝试更改它。
检查您的子主题并确保在父主题添加之后重新定义图像大小。
第 2 步:您不需要删除它
您不需要删除图像尺寸。相反,只是 运行 和 add_image_size
一样。
为什么?记得我在上面说过,当 运行ning 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'
。检查您调用以呈现 post 缩略图的代码。确保指定大小。 - CSS 覆盖大小。在 Chrome 或 Firefox 中打开开发人员工具,检查图像的 URL 是否附加了
-242x242.jpg
后缀。
WordPress 如何呈现图像
当您渲染图像并将其设置为 'sela-grid-thumbnail'
大小时,WordPress 会从 uploads
文件夹中抓取适当的文件。假设图像是 my-cool-background.jpg
。 WordPress 会抓住 my-cool-background-242x242.jpg
.
您可以通过在 Chrome 或 Firefox 中打开开发人员工具来检查这一点。检查浏览器中是否存在正确的图像文件,这意味着它具有 -242x242.jpg
后缀。