2010-10-20 3 views
0

Я строю свою первую тему WordPress, и я застрял на чем-то.Размер изображения до размера миниатюр в WordPress

У меня есть функция в моем function.php, называемая get_first_photo(), которая захватывает первое изображение, загруженное на каждое сообщение, и помещает его на страницу архива блога. Он работает нормально, но загружает полноразмерное изображение и изменяет его размер с помощью CSS. Я предпочел бы загрузить изображение с его миниатюрным размером, установленным в панели управления WP, чтобы у меня не было накладных расходов на размер изображения. Любой способ это сделать?

Вот код из functions.php:

function get_first_photo($id) { 
    global $wpdb; 
    return $wpdb->get_var("SELECT guid FROM wp_posts WHERE post_parent = $id AND post_mime_type = 'image/jpeg' ORDER BY id DESC LIMIT 1"); 
} 

А вот шаблон блога:

<?php 

get_header(); ?> 
<div id="content" class="blog"> 
    <div id="body"> 
     <h3 class="title" id="blog">The Ned Leary Blog</h3> 
<?php if (have_posts()) : 
query_posts("category_name=blog"); 
while (have_posts()) : 
the_post(); 
$first_photo = get_first_photo(get_the_ID()); 
?> 
     <div class="snippet"> 
<?php if (!empty($first_photo)) : ?> 
      <img src="<?php echo $first_photo; ?>" alt="Thumbnail" /> 
<?php else : ?> 
      <img src="<?php bloginfo('url'); ?>/images/blog/gravatarBig.jpg" alt="Ned Leary Gravatar" /> 
<?php endif; ?> 
      <div class="details"> 
       <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> 
       <h5><?php the_time('D, M j, Y') ?> by <?php the_author('') ?> | <?php comments_popup_link('0 Comments', '1 Comment', '% Comments'); ?></h5> 
       <?php the_excerpt(); ?> 
       <h4><a href="<?php the_permalink(); ?>">Read more&hellip;</a></h4> 
      </div> 
     </div><!--end snippet--> 
<?php endwhile; endif;// end of the loop. ?> 
    </div><!--end body--> 
<?php get_sidebar(); ?> 
</div><!--end content--> 
<?php get_footer(); ?> 

ответ

0

Благодаря Джону Форду за то, что указал мне в правильном направлении, я смог понять это.

Запрос в моей функции слегка изменился, захватив идентификатор сообщения вместо guid.

function get_first_photo($id) { 
    global $wpdb; 
    return $wpdb->get_var("SELECT id FROM aire_posts WHERE post_parent = $id AND post_mime_type = 'image/jpeg' ORDER BY id DESC LIMIT 1"); 
} 

А потом мне пришлось добавить еще одну строку в мой файл темы:

$first_photo = get_first_photo(get_the_ID()); 
$thumb = wp_get_attachment_image_src($first_photo); 

Наконец, я обновил свой образ SRC:

<img src="<?php echo $thumb[0]; ?>" alt="Thumbnail" /> 
0

Вы можете использовать GD или какой-либо другой библиотеки изображений программно управлять изображения. Однако было бы лучше всего выполнить операцию по созданию файла миниатюр при загрузке изображения. Вы можете динамически генерировать миниатюру каждый раз, когда страница загружается, но такая операция может быть относительно дорого вычислительной и накладывать ненужную нагрузку на ssystem.

1

Все, что вам нужно, это захватить идентификатор сообщения для этого первого изображения, а затем запустить его через «get_the_post_thumbnail()».

$first_photo = post id of the first image;  
echo get_the_post_thumbnail($first_photo); 

Вы также можете потянуть свои собственные размеры миниатюр, если хотите. Пока вы используете wordpress 2.9+.

Просто добавьте в functions.php

add_theme_support('post-thumbnails'); //enable thumbs 
add_image_size('mycustom-preset', width you want, height you want); //custom size 

Затем запустите ту же функцию, но назвать ваш новый пресет ...

$first_photo = post id of the first image;  
echo get_the_post_thumbnail($first_photo, 'mycustom-preset'); 

http://codex.wordpress.org/Function_Reference/get_the_post_thumbnail

http://codex.wordpress.org/Function_Reference/add_image_size

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

+0

Этот был близок, но мне нужно установить пост-эскизы на каждый пост, чего я пытаюсь избежать. – Marcus

0

вы можете использовать функцию get_the_post_thumbnail или использовать генератор миниатюр php, такой как timbthumb

  <?php $images = get_children(array('post_parent' => $page->ID, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order', 'order' => 'ASC', 'numberposts' => 999)); 
     if ($images) { 
      $total_images = count($images); 
      $image = array_shift($images); 
      $thumbnail = wp_get_attachment_image_src($image->ID, array(225,125)); 
      $thumbnail = $thumbnail[0]; } 
      ?> 
      <img class="size-thumbnail alignleft" src="<?php echo $thumbnail; ?>" alt="<?php echo $page->post_title ?>"> 
Смежные вопросы