Intereting Posts
Как преобразовать пользовательскую таксономию в пользовательский тип сообщения? Перезапуск страницы страницы архива будет отличаться от пользовательского типа сообщений Как отображать прошедшие события в одной из категорий? Не удалось проверить, активен ли плагин Скрыть комментарии, ожидающие модерации от пользователя, который отправил комментарии Имейте сообщение WordPress перенаправить на url при вступлении в iPad (Safari) Как отображать категории продуктов и количество продаж в WooCommerce Проверьте, находится ли текущая страница в области администрирования Wp wp-admin – сохранить параметры без обновления? Пользовательские полевые множественные оговорки Пользовательский шаблон шаблона страницы не работает правильно woocommerce показать только родительскую категорию (taxonomy-product_cat.php) Есть ли крючок между нажатием «Добавить новый» и экраном редактирования нового сообщения? Изменить URL-адрес defoult для WooCommerce Почему вы используете add_action для короткого кода?

Как проверить, загружает ли пользователь / устанавливает изображение в качестве отображаемого изображения?

Я делаю ограничение для загрузки изображения на основе превосходного фрагмента @brasofilo. Короче говоря, это ограничивает пользователя только загрузкой изображения с минимальным размером.

Однако я хочу применить это только тогда, когда пользователь загружает изображение. Я пытался использовать $pagenow в качестве условного,

 global $pagenow; if ($pagenow == 'media-upload.php') add_filter( 'wp_handle_upload_prefilter', 'wpse_28359_block_small_images_upload' ); 

Но это не сработает. Любая идея здесь?

Определить, действительно ли приложение действительно является признаком изображения , легко:

 get_post_thumbnail_id( get_post() ); 

которая является удобной функцией вокруг

 get_post_meta( get_post()->ID, '_thumbnail_id', true ); 

Это немного сложнее, если вы не знаете ничего, кроме имени файла или Url.

 add_filter( 'wp_handle_upload_prefilter', function( $file ) { $url = wp_get_attachment_image_src( get_post_thumbnail_id( get_post() ), 'post-thumbnail' ); // Output possible errors if ( false !== strpos( $url, $file ) ) { $file['error'] = 'Sorry, but we only allow featured images'; } return $file; } ); 

Как вы можете видеть, я сравниваю только текущую строку с сообщениями с изображениями URl. Обратите внимание, что я не знаю, будет ли это работать, оно не проверено, а параметр wp_handle_upload_prefilter может быть слишком ранним.

Другим вариантом может быть использование последнего фильтра внутри _wp_handle_upload() :

 apply_filters( 'wp_handle_upload', array( 'file' => $new_file, 'url' => $url, 'type' => $type ), 'wp_handle_sideload' === $action ? 'sideload' : 'upload' ); 

который также обрабатывает боковые нагрузки.

В теории я предполагаю, что еще слишком рано проверять, является ли показанное изображение фактически отображаемым изображением до его установки. Возможно, вы сможете вернуть загрузку после ее завершения (удалить файл, сбросить метаданные сообщения), но это далеко не изящно.

Сама мета-поле регистрируется с помощью add_meta_box() а обратный вызов в поле – post_thumbnail_meta_box , который вызывает _wp_post_thumbnail_html() для визуализации содержимого. Когда вы посмотрите туда, вы увидите, что на самом деле есть скрытое поле:

 $content .= '<input type="hidden" id="_thumbnail_id" name="_thumbnail_id" value="' . esc_attr( $thumbnail_id ? $thumbnail_id : '-1' ) . '" />'; 

Теперь name _thumbnail_id , которое вы можете получить с помощью filter_input() (good) или с $_POST['_thumbnail_id'] (плохой) внутри обратного вызова, например wp_handle_upload_prefilter чтобы определить, действительно ли это было изображение:

 $featID = filter_input( INPUT_POST, '_thumbnail_id', … filters … ); 

Добавьте ниже код в файл functions.php текущей темы, и он ограничит минимальные размеры изображения:

 add_filter('wp_handle_upload_prefilter','tc_handle_upload_prefilter'); function tc_handle_upload_prefilter($file) { $img=getimagesize($file['tmp_name']); $minimum = array('width' => '250', 'height' => '200'); $width= $img[0]; $height =$img[1]; if ($width < $minimum['width'] ) return array("error"=>"Image dimensions are too small. Minimum width is {$minimum['width']}px. Uploaded image width is $width px"); elseif ($height < $minimum['height']) return array("error"=>"Image dimensions are too small. Minimum height is {$minimum['height']}px. Uploaded image height is $height px"); else return $file; } 

Затем просто измените номера минимальных размеров, которые вы хотите (в моем примере 250 и 200)