Wordpress не дает пользователям публиковать загрузки изображений в полном размере - PullRequest
1 голос
/ 05 января 2010

Есть ли в Wordpress какой-либо способ запретить редакторам контента выбирать параметр «Полный размер» при загрузке изображений в сообщение? Я бы хотел, чтобы у них были только варианты «миниатюра», «средний» и «большой». Я использовал для этого плагин Scissors, но с Wordpress 2.9 этот плагин больше не работает.

Ответы [ 2 ]

4 голосов
/ 10 января 2010

Вы можете получить этот результат, заставив WordPress не отображать опцию полного размера. Функция, которая создает переключатели размера, находится в wp-admin/includes/media.php и называется image_size_input_fields.

Для этой функции, о которой я знаю, нет фильтра или ловушки действий, но функция, которая ее вызывает (image_attachment_fields_to_edit), имеет ловушку фильтра attachment_fields_to_edit.

Таким образом, мы можем использовать фильтр-фильтр для переопределения этих двух функций нашими собственными, которые будут очень незначительно изменены.

Это будет работать в стандартном файле functions.php, или, я полагаю, вы можете включить его в плагин.

Сначала добавьте новый фильтр:

add_filter('attachment_fields_to_edit', 'MY_image_attachment_fields_to_edit', 11, 2);

Далее мы создадим две наши функции. Для этого случая я добавил префикс MY_:

function MY_image_attachment_fields_to_edit($form_fields, $post) {
 if ( substr($post->post_mime_type, 0, 5) == 'image' ) {
  $alt = get_post_meta($post->ID, '_wp_attachment_image_alt', true);
  if ( empty($alt) )
   $alt = '';

  $form_fields['post_title']['required'] = true;

  $form_fields['image_alt'] = array(
   'value' => $alt,
   'label' => __('Alternate text'),
   'helps' => __('Alt text for the image, e.g. “The Mona Lisa”')
  );

  $form_fields['align'] = array(
   'label' => __('Alignment'),
   'input' => 'html',
   'html'  => image_align_input_fields($post, get_option('image_default_align')),
  );

  $form_fields['image-size'] = MY_image_size_input_fields( $post, get_option('image_default_size', 'medium') );


 } else {
  unset( $form_fields['image_alt'] );
 }

 return $form_fields;
}

Единственное, что здесь изменилось по сравнению с обычной функцией WordPress, это то, что мы вызываем MY_image_size_input_fields вместо image_size_input_fields.

Теперь функция, которая выполняет фактическое сокрытие:

<code>function MY_image_size_input_fields( $post, $check = '' ) {

  // get a list of the actual pixel dimensions of each possible intermediate version of this image
  /* $size_names = array('thumbnail' => __('Thumbnail'), 'medium' => __('Medium'), 'large' => __('Large'), 'full' => __('Full size')); */
  $size_names = array('thumbnail' => __('Thumbnail'), 'medium' => __('Medium'), 'large' => __('Large'));

  if ( empty($check) )
   $check = get_user_setting('imgsize', 'medium');

   echo '<pre>'; print_r($check); echo '
'; foreach ($ size_names как $ size => $ label) { $ downsize = image_downsize ($ post-> ID, $ size); $ check = ''; // этот размер можно выбрать? $ enabled = ($ downsize [3] || 'large' == $ size); $ css_id = "image-size - {$ size} - {$ post-> ID}"; // если это размер по умолчанию, но он недоступен, не выбирайте его if ($ size == $ check) { если ($ включено) $ проверено = "проверено = 'проверено'"; еще $ check = ''; } elseif (! $ check && $ enabled && 'thumbnail'! = $ size) { // если $ check не включен, по умолчанию используется первый доступный размер, который превосходит миниатюру $ check = $ size; $ проверено = "проверено = 'проверено'"; } $ html = "
ID] [image-size]' id = '{$ css_id}' value = '{$ size}' $ checked />"; $ html. = ""; // показывать только размеры, если этот выбор доступен если ($ включено) $ html. = ""; $ html. = '
'; $ out [] = $ html; } возвращаемый массив ( 'label' => __ ('Size'), 'input' => 'html', 'html' => join ("\ n", $ out), ); }

В этой последней функции меняются только две вещи. В верхней части мы избавляемся от ссылки на «Full Size» в определении массива $ size_names. Затем строка, которая говорит $enabled = ( $downsize[3] || 'large' == $size );, мы изменили. Мы просто заменили 'full' == $size на 'large' == $size.

Вот скриншот с результатом: alt text

0 голосов
/ 05 января 2010

Я не думаю, что вы можете отключить большой размер, но вы можете установить его ширину и высоту равными среднему размеру. Это в настройках & rarr; Media

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...