ĐĂNG TIN
logo
Online:
Visits:
Stories:
Profile image
Tác giả: fcwordpress
Trang tin cá nhân | Bài đã đăng
Lượt xem

Hiện tại:
1h trước:
24h trước:
Tổng số:
Các cách lấy ảnh đại diện (thumbnail) trong wordpress
Sunday, May 24, 2015 21:15
% of readers think this story is Fact. Add your two cents.


Hôm nay tôi sẽ chia sẽ với anh/chị về các cách lấy ảnh đại diện trong wordpress

Ảnh đại diện hay thường gọi là thumbnail thì dùng để làm ảnh thu nhỏ của một bài viết khi show bài viết dưới dạng desc (mô tả ngắn, giống như các trang tin thường hay làm) và trong wordpress thì có 3 cách để chúng ta lấy ảnh làm đại diện:

  • Ảnh được set là featured image

Trong wordpress đã có support việt set ảnh làm đại diện qua chức năng featured image. Việt lấy nó như thế nào ngay sau đây tôi sẽ chia sẽ với anh chị

Trước tiên anh chị muốn resize kích thước lại đúng không nào. Để resize anh/chị dùng function sau:

add_image_size( 'shopviet-smallimage', 80, 80, TRUE );

Ở ví dụ trên tôi đã khai báo một kích thước resize là 80px X 80px để làm ảnh đại diện. Khi anh chị upload một image có kích thước lơn ví dụ 1024px X 768px thì nó sẽ tự động crop ra một image có size là 80px X 80px

Giờ là việt gọi nó ra nơi bạn cần lấy:

  • Ảnh trong gallery mỗi post 

Có nghĩa là khi người quản trị upload image lên chỉ insert image vào bài viết mà không set featured image (Anh chị lưu ý đây là trường hợp upload image đối với việc new post hiện hành nha, nếu người quản trị upload ở thư việt media hoặc ở một post khác rồi sau đó mới insert vào new post=>thì new post sẽ có image insert vào nhưng không có image nào trong gallery của post)

Chúng ta sẽ lấy image đầu tiên trong gallery để làm ảnh đại diện:

Tôi đã viết sẵn một function để làm việc này hi vọng giúp ích được anh/chi

function the_get_first_image_in_gallery($post_id,$size){
	global $wpdb;
	$mediumSRC ='';
	$args = array( 'post_parent' => $post_id , 'numberposts' => 1, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'DESC', 'orderby' => 'ID', 'post_status' => null );
	
				$attachments = get_posts( $args );
				foreach ( $attachments as $attachment ) {
					$attachmentArray = wp_get_attachment_image_src( $attachment->ID, $size );
					$caption = $wpdb->get_row("select * from $wpdb->posts where `ID` = '{$attachment->ID}'");//var_dump($attachmentArray);
					$width = $attachmentArray[1];
					$height = $attachmentArray[2];
					 if ( $attachmentArray ) {
						  $mediumSRC = $attachmentArray[0];
						  if ( trim( $mediumSRC != '' ) ) {
						    $mediumSRC;
					 	}
					 }
				}
		?>
        <?php echo $caption->post_excerpt; ?>
  • Ảnh không thuộc 2 trường hợp trên (có insert vào post nhưng không có trong gallery, ảnh link từ nới khác tới bài viết)

Trường hợp này bất đắt dĩ bởi chúng ta sẽ resize theo kiểu ảo có nghĩa là set một trong hai cái style=”width:80px;height:auto;” hoặc ngược lại style=”width:auto;height:80px” và nó sẽ sẽ có các nhược điểm là tốc độ load page sẽ chậm lại do image resize ảo và resize không đúng theo yêu cầu ví dụ một image có size 1024px x 768px thì nó sẽ resize không đúng hình vuông (theo yêu cầu của chúng ta).Tôi đã viết sẵn một function để làm điều này:

//lay anh dieu tien lam thumbnail
function get_first_image() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('//i', $post->post_content, $matches);
$first_img = $matches [1] [0];
if(empty($first_img)){ //Defines a default image
$first_img = false;
}

Tin nổi bật trong ngày
Tin mới nhất

Register

Newsletter

Email this story

If you really want to ban this commenter, please write down the reason:

If you really want to disable all recommended stories, click on OK button. After that, you will be redirect to your options page.