2013-07-18 4 views
1

Пробовал экспериментировать с некоторыми обычными мета-ящиками, но ничего, что я читал или не могу найти, помогает мне достичь того, что я на самом деле после.Размер отображаемого изображения в панели администратора?

Я могу сделать новый мета-ящик, но я не могу найти способ фактически изменить вывод миниатюры сообщений в панели администратора.

function new_post_thumbnail_meta_box() { 
    global $post; 

    echo 'Content above the image.'; 

    $thumbnail_id = get_post_meta($post->ID, '_thumbnail_id', true); 
    echo _wp_post_thumbnail_html($thumbnail_id); 

    echo 'Content below the image.'; 
} 
function render_new_post_thumbnail_meta_box() { 
    global $post_type; 

    // remove the old meta box 
    remove_meta_box('postimagediv','post','side'); 

    // adding the new meta box. 
    add_meta_box('postimagediv', __('Featured Image'), 'new_post_thumbnail_meta_box', $post_type, 'side', 'low'); 
} 
add_action('do_meta_boxes', 'render_new_post_thumbnail_meta_box'); 

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

Скопировал функцию включения и изменил выход, это вызывает ошибку сервера.

function _wp_post_thumbnail_html($thumbnail_id = null, $post = null) { 
      global $content_width, $_wp_additional_image_sizes; 

      $post = get_post($post); 

      $upload_iframe_src = esc_url(get_upload_iframe_src('image', $post->ID)); 
      $set_thumbnail_link = '<p class="hide-if-no-js"><a title="' . esc_attr__('Set featured image') . '" href="%s" id="set-post-thumbnail" class="thickbox">%s</a></p>'; 
      $content = sprintf($set_thumbnail_link, $upload_iframe_src, esc_html__('Set featured image')); 

      if ($thumbnail_id && get_post($thumbnail_id)) { 
        $old_content_width = $content_width; 
        $content_width = 600; 
        if (!isset($_wp_additional_image_sizes['post-thumbnail'])) 
          $thumbnail_html = wp_get_attachment_image($thumbnail_id, array($content_width, $content_width)); 
        else 
          $thumbnail_html = wp_get_attachment_image($thumbnail_id, 'post-thumbnail'); 
        if (!empty($thumbnail_html)) { 
          $ajax_nonce = wp_create_nonce('set_post_thumbnail-' . $post->ID); 
          $content = sprintf($set_thumbnail_link, $upload_iframe_src, $thumbnail_html); 
          $content .= '<p class="hide-if-no-js"><a href="#" id="remove-post-thumbnail" onclick="WPRemoveThumbnail(\'' . $ajax_nonce . '\');return false;">' . esc_html__('Remove featured image') . '</a></p>'; 
        } 
        $content_width = $old_content_width; 
      } 

      return apply_filters('admin_post_thumbnail_html', $content, $post->ID); 
    } 

Или я должен использовать add_image_size ('post_thumbnail', 600, 400, правда); ? потому что это то, что он ищет?

+0

В каком смысле вы имеете в виду «больший или фактический размер»? IMO, скриншот/проект-проект был бы полезен. Потому что, как только я увидел ошибку, где Featured Image «full size», и он полностью разбивает макет администратора, появляется горизонтальная полоса прокрутки, а метабокс - полностью переполненный. – brasofilo

+0

@brasofilo Все в порядке, я работаю над собственной настраиваемой панелью администратора, я полностью переработал ее (и буду githubbing ее после ее завершения), она отзывчива, поэтому горизонтальных полос прокрутки не будет. Отображаемое изображение, отображаемое на панели администратора, по умолчанию 266xrandom px (высота в зависимости от соотношения сторон), я хочу иметь возможность показывать полноразмерное изображение при редактировании/записи сообщений. – andy

+0

Я бы хотел, чтобы он отображался в фактическом размере или размере, который я хочу. Только сейчас он отображается в размере по умолчанию для избранных изображений на панели администратора. 266x144px обычно. – andy

ответ

1

Вы должны заменить _wp_post_thumbnail_html с get_the_post_thumbnail

+0

Если я это сделаю, он даже не дал мне поле «Установленное изображение». (Я попробовал это, прежде чем я сделал это сообщение тоже). – andy

+0

@andy, вы должны упомянуть об этом в Вопросе. Итак, никто не предлагает решения, которые вы уже пробовали. – brasofilo

0

Функция _wp_post_thumbnail_html возвращает код, как это:

<p class="hide-if-no-js"> 
    <a title="Set featured image" href="http://example.com/wp-admin/media-upload.php?post_id=4573&#038;type=image&#038;TB_iframe=1" id="set-post-thumbnail" class="thickbox"> 
     <img width="266" height="90" src="http://example.com/wp-content/uploads/thumb2-3-846x288.png" class="attachment-post-thumbnail" alt="thumb2-3" /> 
    </a> 
</p> 
<p class="hide-if-no-js"> 
    <a href="#" id="remove-post-thumbnail" onclick="WPRemoveThumbnail('dfd8f3353b');return false;"> 
     Remove featured image 
    </a> 
</p> 

Обратите внимание, что изображение является 846x288, но это изменение размера, чтобы 266x90 в атрибуты img тегов.

Analyzing the function, мы видим, что если есть размер изображения с именем post_thumbnail, он получит его. В противном случае он получает размер изображения 266x266 (с урожаем). Вы можете просто скопировать функцию и изменить ее на желаемый результат.

Другой вариант заключается в использовании фильтра admin_post_thumbnail_html и удалите img ширина и высота attributtes:

add_filter('admin_post_thumbnail_html', 'filter_featured_img_so_17713997'); 

function filter_featured_img_so_17713997($html) 
{ 
    $doc = new DOMDocument(); 
    $doc->loadHTML($html); 

    $tags = $doc->getElementsByTagName('img'); 
    if(count($tags) > 0) 
    { 
      $tag = $tags->item(0); 
      $tag->removeAttribute('width'); 
      $tag->removeAttribute('height'); 
      return $doc->saveHTML($tag); 
    } 

    return $html; 
} 

Результаты могут быть не то, что вы ожидаете, хотя. Если изображение больше 266, оно истекает из полотна браузера.

+0

Я пробовал копировать в функции и модифицировать вывод, но он просто бросает мне ошибку сервера. Я отредактирую свой первый пост с кодом, чтобы вы могли видеть, какая глупость я делаю неправильно. – andy

+0

Я могу отредактировать его непосредственно в основном файле WP и заставить его работать, но это не так. Копирование функции по-прежнему дает мне ошибку. – andy

+0

Я обновил свой код для работы с любой версией PHP. – brasofilo

0

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

/** 
* step 1 - define custom image size 
* 
*   - either plan to use 'full' (returns the size of the image you uploaded) OR define our custom image size 
*   - so we can call one of those instead of the system defined default 'post-thumbnail' 
* 
*   - remainder of this example assumes using a custom image size, so it is defined 
*   - if using 'full', instead, then no need to define custom 
*   - so remove the following add_image_size line (and thereby skip step 1) 
*/ 
add_image_size('admin-post-thumbnail', 846, 288, true); 

/** 
* step 2 - replace the meta box with ours for standard post type only, especially so we can set our own callback and 
*   - move it into the larger main column. 
*   - Note that in any event, the full size won't ever have greater width than the current column width 
*   - as CSS and modern admin panel make the image elements responsive to the column width. 
*/ 
add_action('do_meta_boxes', 'so17713997_move_meta_box'); 

function so17713997_move_meta_box(){ 
    remove_meta_box('postimagediv', 'post', 'side'); 
    add_meta_box('postimagediv', __('Featured Image'), 'so17713997_post_thumbnail_meta_box', 'post', 'normal', 'low'); 
} 

// step 3 - custom callback to call our functional replacement for _wp_post_thumbnail_html for post type only 
function so17713997_post_thumbnail_meta_box($post) { 
    $thumbnail_id = get_post_meta($post->ID, '_thumbnail_id', true); 
    echo so17713997_wp_post_thumbnail_html($thumbnail_id, $post->ID); 
} 

/** 
* step 4 - replace _wp_post_thumbnail_html with our version that calls our thumbnail 'admin-post-thumbnail' instead of the default 'post-thumbnail' 
* 
*   - we could do more here, like adjust the content width variable, but not entirely necessary. The custom image size we defined will 
*   - handle most of it, plus the admin section these days has responsive CSS, so the image doesn't blow-out column width in any event. 
*/ 
function so17713997_wp_post_thumbnail_html($thumbnail_id = null, $post = null) { 
    global $content_width, $_wp_additional_image_sizes; 

    $post    = get_post($post); 
    $post_type_object = get_post_type_object($post->post_type); 
    $set_thumbnail_link = '<p class="hide-if-no-js"><a title="%s" href="%s" id="set-post-thumbnail" class="thickbox">%s</a></p>'; 
    $upload_iframe_src = get_upload_iframe_src('image', $post->ID); 

    $content = sprintf($set_thumbnail_link, 
     esc_attr($post_type_object->labels->set_featured_image), 
     esc_url($upload_iframe_src), 
     esc_html($post_type_object->labels->set_featured_image) 
    ); 

    if ($thumbnail_id && get_post($thumbnail_id)) { 
     $old_content_width = $content_width; 
     $content_width = 266; 
     if (!isset($_wp_additional_image_sizes['admin-post-thumbnail'])) // use our custom image size instead of 'post-thumbnail' OR use 'full' for system defined fullsize image 
      $thumbnail_html = wp_get_attachment_image($thumbnail_id, array($content_width, $content_width)); 
     else 
      $thumbnail_html = wp_get_attachment_image($thumbnail_id, 'admin-post-thumbnail'); // use our custom image size instead of 'post-thumbnail' OR use 'full' for system defined fullsize image 
     if (!empty($thumbnail_html)) { 
      $ajax_nonce = wp_create_nonce('set_post_thumbnail-' . $post->ID); 
      $content = sprintf($set_thumbnail_link, 
       esc_attr($post_type_object->labels->set_featured_image), 
       esc_url($upload_iframe_src), 
       $thumbnail_html 
      ); 
      $content .= '<p class="hide-if-no-js"><a href="#" id="remove-post-thumbnail" onclick="WPRemoveThumbnail(\'' . $ajax_nonce . '\');return false;">' . esc_html($post_type_object->labels->remove_featured_image) . '</a></p>'; 
     } 
     $content_width = $old_content_width; 
    } 

    /** 
    * Filter the admin post thumbnail HTML markup to return. 
    * 
    * @since 2.9.0 
    * 
    * @param string $content Admin post thumbnail HTML markup. 
    * @param int $post_id Post ID. 
    */ 
    return apply_filters('admin_post_thumbnail_html', $content, $post->ID); 
} 

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

Кроме того, этот хак делает широкое использование следующих основных функций WordPress:

the_post_thumbnail(),
add_meta_box(),
post_thumbnail_meta_box(), и
_wp_post_thumbnail_html

(у меня не было достаточно репутации еще чтобы опубликовать более двух ссылок, так что Google их.)

0

Вы пытались изменить размер изображения по умолчанию, используя set_post_thumbnail_size()? У меня была такая же проблема, и это сработало отлично.

4

На всякий случай кто-то наткнется на это старое сообщение.

WP представил новый фильтр под названием admin_post_thumbnail_size, чтобы вы могли изменить размер изображения по умолчанию на панели администратора.

Чтобы изменить размер признаков уменьшенного изображения вы можете использовать что-то вроде этого:

function custom_admin_thumb_size($thumb_size){ 
    return "custom-image-size"; //or use something like array(400,400). 
} 
add_filter('admin_post_thumbnail_size', 'custom_admin_thumb_size'); 
1

Начала в WordPress 4.4, новый фильтр был введен, admin_post_thumbnail_size, что позволяет модифицировать размер отображения почтовой миниатюры изображения в метаданных Featured Image.

Когда тема добавляет поддержку «пост-миниатюры», специальный размер изображения «пост-миниатюр» зарегистрирован, который отличается от размера изображения «миниатюры» управляемого через Настройку> Screen Media.

Мы можем использовать этот фильтр, чтобы изменить post-thumbnail размер (266 х 266 пикселей) и изменить его, чтобы использовать thumbnail стандартный размер (150 х 150 пикселей) вместо этого.

/** 
* Change Display Size of Featured Image Thumbnail in WordPress Admin Dashboard 
*/ 
add_filter('admin_post_thumbnail_size', function ($size, $thumbnail_id, $post) { 
    $sizes = get_intermediate_image_sizes(); 

    $result = array_search('thumbnail', $sizes); 

    $size = is_numeric($result) ? $sizes[ $result ] : array(100, 100); 

    return $size; 
}, 10, 3); 

Конкретный размер (например, 100 х 100 пикселей) также может быть определен или установлен в качестве запасного варианта в случае intermediate thumbnail size не доступен.

Смежные вопросы