WordPress — удалить размер изображения & amp; добавить размер изображения в дочерней теме funcions.php не работает

Кто-нибудь может помочь со следующим?

Я пытаюсь изменить один из пользовательских размеров миниатюр, созданных темой в дочерней теме, я добавил следующее в functions.php в дочерней теме:

add_theme_support( 'post-thumbnails' );
remove_image_size( 'sela-grid-thumbnail' );
add_image_size( 'sela-grid-thumbnail', 242, 242, true );

Оригинальная функция из темы парен:

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

Решение

Шаг 1. Загрузите новый размер после родительского

Вы должны убедиться, что вы переопределяете размер изображения после родитель объявил это. Что я имею в виду под этим?

При звонке add_image_size()все, что он делает, это берет параметры и сохраняет их в глобальном $_wp_additional_image_sizes, который вводится именем, которое вы ему даете. Вы можете перезаписать параметры, если у вас есть ключ (запомните это позже).

Давайте пройдемся по последовательности загрузки. WordPress загружает плагины, затем дочернюю тему, а затем родительскую тему. Подумай об этом. Вы хотите изменить размер изображения по умолчанию, который создает родитель. Правильно? Это означает, что родительская тема должна быть запущена в первую очередь, прежде чем пытаться ее изменить.

Проверьте свою дочернюю тему и убедитесь, что вы переопределяете размер изображения после родительская тема добавляет это.

Шаг 2: Вам не нужно удалять его

Вам не нужно удалять размер изображения. Вместо этого просто запустите add_image_size как у вас есть.

Зачем? Помните, что я сказал выше, когда работает add_image_sizeWordPress перезаписывает то, что хранится под именем, которое вы называете размером изображения. Когда вы вызываете ее в своей дочерней теме, она перезаписывает то, что родительская тема хранит в глобальной $_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 Плагин «Восстановить эскизы». Он пройдет через все изображения, а затем создаст новые размеры.

Как проверить новый размер

Как вы проверяете, что ваш новый размер был зарегистрирован?

Регистрация хранится в глобальной переменной $_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 х 242?

  • Если да, то ваш размер изображения зарегистрирован, и вы сделали это правильно.
  • Если нет, то вам нужно вернуться и проверить порядок, когда вы сделали add_image_size(),

Что делать, если он зарегистрирован, но изображения не отформатированы?

Вы проверили выше, и размер изображения правильно зарегистрирован. Но что делать, если изображение, которое вы видите, не имеет размера 242×242 в браузере?

Это другая проблема. Возможно:

  1. Размер изображения не указан при рендеринге в браузер. Например, допустим, вы используете the_post_thumbnail(), Первый параметр — это размер, который будет 'sela-grid-thumbnail', Проверьте код, по которому вы звоните, чтобы отобразить миниатюру сообщения. Убедитесь, что размер указан.
  2. 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 суффикс на нем.

1

Другие решения

Других решений пока нет …