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

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

Я пытаюсь изменить один из настраиваемых размеров миниатюр, созданных темой в дочерней теме, я добавил следующее в 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 родительской темы - кто-нибудь может сказать мне, почему? Я что-то упускаю? Спасибо


person MariaCnx    schedule 24.11.2016    source источник
comment
Попробуйте добавить другой размер - и посмотрите, сработает ли это. И я бы также подключил его к действию - developer.wordpress.org/reference/functions/remove_image_size   -  person muka.gergely    schedule 24.11.2016
comment
@MariaCnx Если один из ответов ниже дал ответ на ваш вопрос, значит, этот сайт работает так, что вы его принимаете. Дополнительная информация stackoverflow.com/help/someone-answers. Но делайте это только в том случае, если он действительно ответил на ваш вопрос.   -  person hellofromTonya    schedule 07.12.2016
comment
Ах, спасибо @hellofromTonya, извините, я слишком новичок в этом !!   -  person MariaCnx    schedule 08.12.2016


Ответы (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.

Как восстановить существующие изображения

Хорошо, как восстановить все существующие изображения, чтобы получить новый размер? Я использую плагин Regenerate Thumbnails от 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 x 242?

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

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

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

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

  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.

person hellofromTonya    schedule 24.11.2016
comment
Большое спасибо! Мне еще не удалось заставить это работать, но я начинаю понимать, почему! :) - person MariaCnx; 01.12.2016
comment
@MariaCnx Я добавил для вас несколько советов по отладке в конце моего ответа выше. Шаг 1. Убедитесь, что зарегистрирован ваш новый размер. Для этого я даю вам приведенный выше код. - person hellofromTonya; 01.12.2016