- 4809 fans
- 1036 reader
- 122 followers
Tạo Thumbnail không dùng Custom Field
- In category: WordPress
- 15 comments
Trong video lần trước tôi đã hướng dẫn các bạn cách hiển thị Thumbnail sử dụng Custom Field. Cách này theo tôi là hay nhất bởi vì bạn có toàn quyền quyết định thumbnail của bạn sẽ được hiện ra như thế nào và bạn có thể design thumbnail sao cho nó phù hợp với bài post. Tuy nhiên có những trường hợp bạn không muốn mất thời gian mà chỉ muốn WordPress tự động lầy tấm hình đầu tiên trong bài post và hiển thị nó làm thumbnail.
Đặc biệt nếu bạn làm trang web cho khách hàng họ không biết sử dụng Photoshop và cũng khó hình dung cách sử dụng Custom Field. Cho nên chúng ta có thể tạo thumbnail một cách tự động và hiển thị nó. Dưới đây là 2 cách bạn có thể sử dụng để hiển thị thumbnail mà không cần sử dụng Custom Field.
Sử dụng chức năng Image Attachment
Trong bài hướng dẫn cách tạo Content Slider tôi đã giới thiệu với bạn chức năng Image Attachment trong WordPress, trong bài này chúng ta cũng sẽ sử dụng lại chức năng này để hiển lấy hình của bài post. Cách này dành cho những khách hàng không biết chút gì về HTML, họ chỉ việc upload hình là xong.
Ban đầu bạn hãy mở trang index.php và trong WordPress Loop
<?php if(have_posts) : while(have_posts) : the_post() ?>
Gõ vào đoạn code sau
<?php
//lấy hình ở trong post
$args = array(
'post_type' => 'attachment',
'post_mine_type' => 'image',
'numberposts' => -1,
'order' => 'ASC',
'post_status' => null,
'post_parent' => $post->ID
);
$attachments = get_posts($args);
if ($attachments) {
foreach ($attachments as $attachment) {
$thumbnail = wp_get_attachment_thumb_url($attachment->ID);
break;
}
}
?>
Tiếp theo bạn chỉ việc echo biến $thumbnail ở trên ra vào thẻ <img> như sau:
<a href="<?php the_permalink(); ?>"> <img src="<?php echo $thumbnail; ?>" alt="post image" /> </a>
Cuối cùng khi muốn thêm hình vào bài viết bạn chọn add an image và chèn hình vào bài viết là xong.
Sử dung hàm preg_match
Trong cách này chúng ta sẽ không cần sử dụng chức năng upload hình như ở trên, nhưng khách hàng của bạn phải tự động chèn thẻ <img> vào bài post.
Ban đầu bạn hãy mở file functions.php trong theme của bạn ra (nếu chưa có thì tạo file functions.php) sau đó gõ đoạn code ở dưới vào.
function thumb_image() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches [1] [0];
if(empty($first_img)){
//Bạn có thể thêm hình mặc định nếu bài post ko có hình
$first_img = "/images/myImage.jpg";
}
return $first_img;
}
Lưu lại và mở tiếp file index.php và gọi hàm vừa tạo ra
<a href="<?php the_permalink();?>"> <img src="<?php echo thumb_image(); ?>" alt="thumbnail" /> </a>
Đến đây chúng ta đã có hình thumbnail rồi nhưng nó có kích thước quá lớn. Bạn có hai cách để sửa nó. Cách thứ nhất là sử dụng CSS và khai báo giá trị width của thẻ <img> với giá trị bạn muốn. Cách thứ hai là bạn sử dụng một đoạn mã có sẵn là timthumb.php bạn có thể download ở đây. Sau khi download về bạn cho nó vào thư mục theme của bạn. Trong ví dụ này tôi để nó ngang hàng với trang index.php. Và việc cuối cùng bạn cần làm là gõ đoạn code sau thay vì đoạn code trên
Nếu đoạn này có gì khó hiểu, bạn có thể xem video về phần Sidebar và Random Posts, tôi có hướng dẫn chi tiết về cách sử dụng timthumb.php
<a href="<?php the_permalink();?>">
<img src="<?php bloginfo('stylesheet_directory') ?>/timthumb.php?src=<?php echo thumb_image(); ?>&h=150&w=150&zc=1" alt="thumbnail" />
</a>
Tất nhiên với giá trị h=150&w=150 thay bằng giá trị bạn muốn. Vậy là xong! nếu có câu hỏi gì hãy post dưới phần comment
Kết luận
Cả hai cách trên đều có thể sử dụng tốt trong mọi trường hợp, nhưng mỗi cách đều có điểm mạnh điểm yếu khác nhau, tùy từng trường hợp bạn nên chọn cách phù hợp cho mình. Tuy nhiên để có toàn quyền quyết định bạn nên sử dụng Custom Field là cách hay nhất bây giờ.
-
Huân Nguyễn
-
http://tranhchuthap.com Quang
-
vu duc hai
-
do hieu
-
tanlevis
-
-
chung
-
balabala
-
http://skyvnn.net Goncorpius
-
Quoc hung
-
Quoc hung
-
kjsslv
-
http://data.vcn.vn Nguyen ngoc phuc
-
http://ictexpress.com Nguyễn Ngọc Long
-
-
Thịnh Hưng
-
http://ictexpress.com Nguyễn Ngọc Long
-
Các series nên xem trên izwebz cho newbie
Khi vào izwebz chắc nhiều bạn cho rằng các bài viết trên izwebz đều không có hệ thống gì cả? Thực chất, các bài biết đều đi theo một series của riêng nó, ví dụ như PHP, HTML & CSS, PSD2HTML, Photoshop, illustrator,… Trong bài viết này, mình sẽ tổng hợp lại các series bài viết cần thiết cho một newbie.
-
Hướng đối tượng dựa vào cấp bậc XHTML
Post by Demon Warlock @ 12/10/2008
-
Basic photoshop: Bài 1 – Làm việc với vùng chọn
Post by Võ Minh Mẫn @ 18/09/2010
-
Biết nhẫn nại và kiên trì
Post by Demon Warlock @ 22/09/2008
-
Class và ID
Post by Demon Warlock @ 07/10/2008
-
Nguồn của tôi – Nguồn thiết kế
Post by Võ Minh Mẫn @ 26/06/2011
Archives
- March 2013 (3)
- February 2013 (1)
- January 2013 (3)
- December 2012 (2)
- November 2012 (2)
- October 2012 (3)
- September 2012 (7)
- August 2012 (5)
- July 2012 (3)
- June 2012 (1)
- May 2012 (3)
- April 2012 (4)
- March 2012 (4)
- February 2012 (4)
- January 2012 (4)
- November 2011 (1)
- August 2011 (4)
- June 2011 (5)
- May 2011 (5)
- April 2011 (1)
- March 2011 (1)
- February 2011 (3)
- January 2011 (9)
- December 2010 (10)
- November 2010 (8)
- October 2010 (8)
- September 2010 (12)
- August 2010 (6)
- July 2010 (2)
- June 2010 (4)
- May 2010 (2)
- April 2010 (5)
- March 2010 (13)
- February 2010 (11)
- January 2010 (13)
- December 2009 (10)
- November 2009 (18)
- October 2009 (9)
- September 2009 (15)
- August 2009 (18)
- October 2008 (11)
- September 2008 (33)
- August 2008 (31)
