Як відключити генерацію розмірів зображення за замовчуванням для деяких спеціальних типів публікацій?


12

Я використовував спеціальний тип публікації, де розмір мініатюр, середнього та великого розміру не потрібен. Мені потрібно відключити ці розміри та створити функцію чи плагін, де я можу встановити, який розмір зображення потрібен для кожного користувацького типу публікації.

Мій перший крок - підключення функції get_intermediate_image_size з wp-include / media.php. Я додав цей код до function.php, але він не працює :(

add_filter('get_intermediate_image_sizes', 'get_intermediate_image_sizes_fixed');
function get_intermediate_image_sizes_fixed() {
    global $_wp_additional_image_sizes;
    //$image_sizes = array('thumbnail', 'medium', 'large'); // Standard sizes
    $image_sizes = array();
    if ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) )
        $image_sizes = array_merge( $image_sizes, array_keys( $_wp_additional_image_sizes ) );
return apply_filters( 'intermediate_image_sizes', $image_sizes );
}   

UPD: Редагування цього рядка в media.php працює. Типи за замовчуванням після не генеруючих змін.

$image_sizes = array('thumbnail', 'medium', 'large');

Але як змусити роботу зачепитись?


1
хотів би відповісти і на це
urok93

2
Це не те, як ви використовуєте цей фільтр. Для очищення розмірів за замовчуванням просто потрібно додати його з дуже низьким пріоритетом і повернути порожній масив. Однак це не вирішить вашу проблему, оскільки це вплине на всі типи публікацій. Я не думаю, що в поточній версії WP є спосіб зробити те, що ви хочете. Спробуйте запросити WP devs, щоб додати $attachment_idаргумент до фільтра всередині цієї функції. Таким чином ви можете перевірити тип пошти всередині вашого гачка
onetrickpony

Мій крок - це лише експеримент, але не повне рішення. Як я можу правильно використовувати фільтр? PS Дякую за посилання ..
Богдан Хдал

Будь-які зміни в WP, які роблять це можливим зараз?
Drivingralle

Ніяких змін. Ще та сама проблема.
Богдан Гдал

Відповіді:


7

Я думаю, що єдине рішення, яке ви маєте на даний момент, - це відключити всі проміжні розміри зображення:

add_filter( 'intermediate_image_sizes', '__return_empty_array', 99 );

А потім генеруйте їх вручну, залежно від типу публікації, підключившись до 'wp_generate_attachment_metadata', де ви маєте доступ до ідентифікатора вкладеного файлу (і, отже, до його батьківського допису):

function do_your_stuff( $data, $attachment_id ) {
  // generate intermediate images

  return $data;
}

add_filter( 'wp_generate_attachment_metadata', 'do_your_stuff', 10, 2 );

Які 10 та 2 параметри ви передаєте в останній add_filter?
Лука

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.