Bào viết đáp ứng theo yêu cầu của bạn CAA trong bài viết “Đùa” với wordpress theme. Mình nghĩ rằng bài viết này sẽ có ích cho khá nhiều bạn.
Trước tiên, mình mời mọi người tìm hiểu về vấn đề lấy hình ảnh trong nội dung bài viết trước. Đây là bài viết lập trình liên quan đến việc lấy hình ảnh trong nội dung website. Mình nghĩ là bài viết này sẽ có ích cho các bạn quan tâm đến vấn đề này ngoài wordpress.
Các bạn cứ giành thời gian đọc, mình sẽ đợi….
Lấy hình ảnh trong bài làm thumnail với wordpress
Chúng ta có nhiều cách để lấy được phần nội dung này. Cách đơn giản nhất theo mình là sử dụng tính năng Custom Fields để làm. Tuy nhiên, tùy theo giao diện mà Custom Field của bạn có phát huy hiệu quả hay không. Vấn đề sử dụng Custom Field tạm thời mình dừng ở đây vì nếu bàn sâu quá thì sẽ trở thành một bài về Custom Field mất. Bạn nào cần nghiên cứu kĩ hơn về nó thì chúng ta sẽ có nó trong một bài khác nhé.
Sau đây, mình xin trình bày một phương án khác đơn giản hơn và thuận tiện hơn để làm việc này. Đó là chúng ta sẽ tìm kiếm trong bài viết những file đính kèm dạng hình ảnh để làm thumbnail.
Để hình ảnh được đẹp và phù hợp với giao diện khi thu nhỏ hoặc phóng to, mình sử dụng phpThumb. Các bạn có thể download về và đặt tại thư mục theme_cua_ban/phpThumb.
Tiếp theo bạn mở file functions.php nằm trong thư mục theme của bạn và thêm vào đoạn code sau:
[code language=”php”]/********************************************************************
Get image attach
********************************************************************/
function img($width,$height) {
global $post;
$custom_field_value = get_post_meta($post->ID, ‘in_image’, true);
$custom_field_value_2 = get_post_meta($post->ID, ‘out_image’, true);
$attachments = get_children( array(‘post_parent’ => $post->ID, ‘post_status’ => ‘inherit’, ‘post_type’ => ‘attachment’, ‘post_mime_type’ => ‘image’, ‘numberposts’ => 1) );
if ($custom_field_value == true) {
$img_url = parse_url($custom_field_value,PHP_URL_PATH);
print ‘post_title.’" />’;
}
elseif ($custom_field_value_2 == true) {
print ‘post_title.’" />’;
}
elseif ($attachments == true) {
foreach($attachments as $id => $attachment) {
$img = wp_get_attachment_image_src($id, ‘full’);
$image = $image[0];
$img_url = parse_url($img[0], PHP_URL_PATH);
print ‘post_title.’" />’;
}
}
else {
$img = get_template_directory_uri();
$img_url = parse_url($img,PHP_URL_PATH);
print ‘post_title.’" />’;
}
}
function img2($width,$height) {
global $post;
$custom_field_value = get_post_meta($post->ID, ‘in_image’, true);
$custom_field_value_2 = get_post_meta($post->ID, ‘out_image’, true);
$attachments = get_children( array(‘post_parent’ => $post->ID, ‘post_status’ => ‘inherit’, ‘post_type’ => ‘attachment’, ‘post_mime_type’ => ‘image’, ‘numberposts’ => 1) );
if ($custom_field_value == true) {
$img_url = parse_url($custom_field_value,PHP_URL_PATH);
print ‘post_title.’" />’;
}
elseif ($custom_field_value_2 == true) {
print ‘post_title.’" />’;
}
elseif ($attachments == true) {
foreach($attachments as $id => $attachment) {
$img = wp_get_attachment_image_src($id, ‘full’);
$image = $image[0];
$img_url = parse_url($img[0], PHP_URL_PATH);
print ‘post_title.’" />’;
}
}
else {
$img = get_template_directory_uri();
$img_url = parse_url($img,PHP_URL_PATH);
print ‘post_title.’" />’;
}
}
Hai hàm trên có tác dụng tìm kiếm và phân tích, lấy hình ảnh thích hợp, kết hợp với bộ thư viện phpThumb để tạo ra các hình ảnh theo yêu cầu của bạn.
Tiếp theo, bạn mở file index.php cũng trong thư mục theme của bạn, tìm đến đoạn tiêu đề
[code language=”php”] <?php the_title(); ?>[/code]
Tùy theo từng cấu trúc của theme mà bạn tìm vị trí thích hợp chèn đoạn này vào:
[code language=”php”] <p><a href="<?php the_permalink() ?>" class="thumb3" title="Chuyển đến bài viết <?php the_title_attribute(); ?>"><?php img(510,120); ?></a></p>[/code]
Trong hàm img() là giá trị chiều rộng và chiều cao bạn muốn tạo. Nếu muốn đẹp hơn cho hình ảnh này, bạn có thể mở file style.css để thiết kế thêm class thumb3 cho đẹp.
P/S : Đoạn code này mình lấy trực tiếp từ trong blog ra nên có thể sẽ có một số thành phần thừa nhưng không ảnh hưởng đến việc lấy hình ảnh của bạn. Phát triển và tùy biến đoạn code này mình sẽ trả lời dần trong comment.
CAA says
>:D:D:D<
CAA says
Ủa sao em không comment được thế nhỉ
CAA says
A được rồi. Cảm ơn bác Nhân vì bài viết. Dạo này đang bận thi cử nên ít online. Em rất thích những bài viết hướng dẫn sd code như thế này. một lần nữa cảm ơn bác
tendainhat says
Ủa mà add vào đâu nhỉ bác ^^ em newbie, hihi em add nó báo lỗi :( :((
Nguyễn Duy Nhân says
Trên có hướng dẫn rồi mà bạn ?
tendainhat says
Hihi nhưng nó ko tự động anh à :) em vẫn phải edit :)
Nguyễn Duy Nhân says
Edit gì bạn ? Nó tự động lấy ảnh từ bài viết ra làm thumbnail rồi mà. Một số ảnh của báo Tuổi Trẻ bị lỗi do redirect thôi.
tendainhat says
Edit bài viết ấy :)
Còn báo tuổi trẻ em hem có lấy vì lỗi :)
Em làm hoài mà nó ko ra :((
Nguyễn Duy Nhân says
Vẫn không cách nào hiểu được bạn muốn gì và gặp lỗi gì :| Bạn mô tả rõ ràng cách làm và nếu được thì cho mình xin cái demo. Biết đâu còn giúp được bạn chứ bạn nói như vầy thì mình… bó giò luôn.
tendainhat says
hihi thì em có làm như của anh, em add cái code anh đưa ra ấy thì em thấy trên header nó hiện nguyên cái code trên lên phần đầu, nên em đã xóa đi. Em có dùng plugin robot – VN 1.1.0 ấy, tự động post bài nhưng thumbnail thì ko có hiện vậy nên em mới kêu.
Demo: http://news-247.org
Em dùng themes VN-News ý mà :)
Gà Con says
e thường upload ảnh lên acc photobucket hoặc Megapix của e, cách của anh hình như khong áp dụng đc cho e đúng khong ạ? cách của a fai upload ảnh bằng chính WordPress phải không a? a hướng dẫn e làm tạo thum theo ảnh đầu tiên trong bài viết đc không ạ, khi e upload ảnh đó lên hosting khác khong fai Wp
Nguyễn Duy Nhân says
Link ở đâu không qua trọng. Chủ yếu là URL phải còn sống là được.
Gà Con says
e dùng theme y hệt anh “Extended Ma”, a có thể gửi cho e các file php hay là file gì đó cần thiết,đã được sửa để làm đc công việc hiện ảnh đầu tiên trong posst làm thumb , vào mail cho e đc không (bkshare.com@gmail đó ạ), e mới vọc lên khong biết chèn code anh hướng dẫn vào đâu cả :((
tìm trong file index-magazine.php cũng khong có dòng “php the_title();” ở đâu
microsofttech says
Chức năng sử dụng hình ảnh làm thumbnail trong 1 số theme thấy cũng khá hay, nhưng mình thì lại ko thích dùng lắm :D Thiết nghĩ thumbnail chút xíu không thể thể toát hết nội dung, mà lại mất công design hoặc tìm hình thích hợp nữa :))
Tùng Nguyễn says
Em hiện đang làm trên localhost, với template baby theme.
Hiện khi em chèn vào fuctions.php thì nó báo là lỗi máy chủ, em ko hỉu nữa, vậy có thể c ho em biết chèn ở đâu của file này ko ạ, ở trước <?php
hay là bên trong ?? Thông cảm em chưa học về php hay về bất cứ ngôn ngữ nào ạ
Ngoài ra chèn vào index.php của theme là chèn code nào
Nguyễn Duy Nhân says
Bạn chèn ở trong thẻ cũng được :)
Mỗi theme đều có 1 file index.php để sử dụng, chèn index.php của theme là chèn vào file đó đó.
Tùng Nguyễn says
Dạ vâng em làm được rồi ạ, có vài code em chèn như code trên webminhf thì chèn vào nó báo là lỗi máy chủ nguyên nhân là sao nhỉ
Nguyễn Duy Nhân says
Nguyên nhân là … tùy trường hợp. Bạn phải đọc rõ lỗi xem là lỗi gì thì mới biết cách fix được. Không khó nhưng cũng không dễ. Cố lên.