Можно ли определить, когда пользователь находится в "Медиафайлы > Добавить новое" vs "Запись > Добавить изображение"
Я хочу обернуть приведенный ниже фильтр в условие, которое проверяет, загружает ли пользователь изображение через Медиабиблиотеку (Админка > Медиафайлы > Добавить новое), а не через загрузку изображения в редакторе записи.
Возможно ли это определить? Переменная $pagenow в обоих случаях кажется одинаковой...
//без дополнительных миниатюр
global $pagenow;
if($pagenow=="media-new.php"){
add_filter('intermediate_image_sizes_advanced','ce4_no_thumbs');
}
function ce4_no_thumbs($sizes){return array();}
Обновление: Похоже, что post_id присутствует в строке запроса при загрузке из записи и отсутствует при загрузке через "медиабиблиотеку > добавить новое", однако следующий тест проходит в обоих случаях...
if ( is_admin() && !isset($_GET['post_id']) ) {
/*Это не должно срабатывать, если пользователь загружает изображение в запись,
так как post_id есть в строке запроса. Однако в моем тесте
проверка все равно проходит.*/
add_filter('intermediate_image_sizes_advanced','ce4_no_thumbs');
}

Я ответил на этот вопрос в комментариях к вашему предыдущему вопросу.
...вы можете использовать фильтр, который предложил @Backie выше (
intermediate_image_sizes_advanced
), и в функции-обработчике проверить поле в коллекции поста с именем _wp_http_referer. Оно указывает, откуда пришел запрос на загрузку.Если _wp_http_referer содержит "media-new.php", вы можете вернуть пустой массив (это временно остановит генерацию миниатюр, но не изменит никаких настроек миниатюр). В противном случае верните массив $sizes без изменений.
Попробуйте:
function wpsx_7756_no_thumbnails($arr_sizes){
if(stristr($_POST['_wp_http_referer'], 'media-new.php')) {
return array();
}
return $arr_sizes;
}
add_filter('intermediate_image_sizes_advanced','wpsx_7756_no_thumbnails');
Дайте мне знать, если это сработает.
Имейте в виду, что добавление фильтра пока вы находитесь на форме загрузки не даст желаемого результата — форма отправляется на отдельную страницу, которая обрабатывает загрузку, и она не учитывает ваш фильтр.

@MathSmath: Я добавил это в functions.php и протестировал. К сожалению, все миниатюры всё равно создаются при использовании "Медиафайлы > Добавить новый". Есть идеи по трассировке? echo "the post referrer: ".$_POST['_wp_http_referer']; (возвращает целое число, увеличивающееся на +1 при каждой загрузке)

Возможно, другим вариантом будет проверка на iframe? Похоже, он есть в загрузчике через запись, но, видимо, отсутствует в загрузчике через менеджер медиафайлов > добавить новый.

@Scott B Чёрт! Я был уверен, что это сработает :) Не уверен насчёт iframe. Для трассировки попробуйте добавить wp_die(json_encode($_POST)) в начало вашей функции "no thumbnails". Это выведет содержимое массива POST на момент выполнения фильтра. Вполне возможно, что к моменту, когда WordPress доходит до создания миниатюр, исходный массив POST уже выходит из области видимости? В любом случае, вы можете увидеть что-то в доступном массиве POST, что можно использовать для идентификации реферера.

@MAthSmath: Понял! if(!stristr($_POST['type'], 'image')) {return array();}return $arr_sizes;}
