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; } } } ?>
- Ả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; }
2015-05-24 20:13:06
Nguồn: http://fcwordpress.net/cac-cach-lay-anh-dai-dien-thumbnail-trong-wordpress.html