Người Viết : ViKiMi Editor

Hướng dẫn lấy hình ảnh đại diện Bài Đăng WordPress một cách hiệu quả , Phần 3 !
Trong những phần trước đã thực hiện nhiều về hiển thị hình ảnh đại diện của Bài Post. Tuy nhiên, có lẽ vậy chưa đủ nên ở phần tiếp theo này để thấy được có nhiều cách lấy hình ảnh đại diện thì chúng ta sẽ thực hiện một cách khác để lấy về hình ảnh đại diện của một bài Đăng. Như vậy, có nhiều cách hiểu dễ hơn với thực hiện công việc này với WordPress.
Để thấy được cách làm này, thì có lẽ với một cách mới sẽ giúp ích nhiều cho kỹ thuật lập trình hơn. Vì vậy, Các cách áp dụng được cũng tuỳ theo cách mà chương trình có thể chạy nhanh hơn nữa không? Hoặc là cách triển khai Modun sao cho đạt hiệu quả hơn thông thường.
Đoạn mã đơn giản được đề cập ở đây là :
<?php
/**
* Hiển thị ảnh đại diện của bài Post
* Sử dụng lấy các attachment của Post
* Tham số truyền vào Post ID.
*/
function display_first_image( $post_id ) {
$args = array(
‘posts_per_page’ => 1, /* Chỉ lấy về một bản ghi*/
‘order’ => ‘ASC’, /* Lấy về theo chiều tăng dần */
‘post_mime_type’ => ‘image’,
‘post_parent’ => $post_id,
‘post_status’ => null,
‘post_type’ => ‘attachment’, /* Kiểu attachment */
);
$atts = get_children( $args ); /* Sử dụng Func get_children */
if ( $atts ) { /* Nếu có dữ liệu */
foreach ( $atts as $att ) {
/* Nếu có kiều thumbnail thì trả về là thumbnail; Nếu không có thì trả về
* là ảnh Full
*/
$image_attributes = wp_get_attachment_image_src( $attachment->ID, ‘thumbnail’ ) ? wp_get_attachment_image_src( $attachment->ID, ‘thumbnail’ ) : wp_get_attachment_image_src( $attachment->ID, ‘full’ );
echo ‘<img src=”‘ . esc_url( wp_get_attachment_thumb_url( $attachment->ID ) ) . ‘” class=”customClass” />’;
}
}
}
?>
Trong phần xử lý này chúng ta thấy cách lấy về khá hiệu quả, giống như chúng ta thực hiện Customize hình ảnh hiển thị vậy. Vì chúng ta thấy phần chữ bôi đỏ đậm ( customClass ) , cho phép chúng tha thêm Code Css để cho phép hiển thị hình ảnh theo cách chúng ta muốn. Đây là một cách rất tốt cho những ai code một Function chung cho toàn bộ nội dung lơn, mà không muốn phải code quá nhiều.
Function mà chúng ta quan tâm ở đây đó là :
get_children($args) /* Function số 1 */
wp_get_attachment_image_src( $attachment->ID, ‘thumbnail’ ) /* Function số 2 */
Với get_children($args) sẽ giúp chúng ta lấy về toàn bộ những tệp đính kèm của một Post có POST ID là tham số $post_id . Function get_children($args) giúp lấy về những gì chúng ta muốn. Ở code trên chúng ta chỉ lấy về một bản ghi, có nghĩa là chúng ta chỉ lấy về một hình ảnh đính kèm của Post, và đây chúng ta sẽ có là một ảnh đại diện. Nếu Bạn muốn có nhiều xử lý hơn thì hãy thực hiện lấy nhiều bản ghi hơn và tuỳ theo cách bạn sẽ xử lý mà thực hiện các cách khác nhau theo nhu cầu của bạn.
Tuy nhiên, chỉ dùng Function số 1 thì chưa đủ để hiển thị được hình ảnh lên. Đó là lý do phải dùng Function số 2 wp_get_attachment_image_src() để có thể lấy về đường dẫn của hình ảnh và chúng ta mới có thể hiển thị hình ảnh này lên như mong muốn. Vì chức năng của Function số 2 là cho phép chúng ta lấy về đường dẫn của hình ảnh đính kèm.
Công việc đơn giản cuối cùng là dùng một thẻ <img> để hiển thị hình ảnh lên theo mong muốn, khi hiển thị hình ảnh chúng ta có thể Customize hình ảnh bằng CSS hoặc bất kỳ những gì bạn thích .
<img src=”‘.esc_url(wp_get_attachment_thumb_url($attachment->ID)).'”
class=”customClass” />
GIẢI THÍCH THÊM VỀ FUNCTION GET_CHILDREN
Chúng ta có định nghĩa của Functions như sau :
get_children( mixed $args = ”, string $output = OBJECT ): WP_Post[]|array[]|int[]
Chức năng cho phép truy xuất tất cả phần tử con của Bài Đăng Gốc ( POST ID )
Khi sử dụng Function này chúng ta có thể lấy về tất cả các phần tử đính kèm … của một Post. Các phần tử đính kèm sẽ cho phép chúng tuỳ chình nhiều hơn.
Giá trị nhận về từ Function này như sau ( Đây là tệp đính kèm nhé ) :
array(01) {
[“ID”] => (int)
[“post_author”] => (string)
[“post_date”] => (string)
[“post_date_gmt”] => (string)
[“post_content”] => (string)
[“post_title”] => (string)
[“post_excerpt”] => (string)
[“post_status”] => (string)
[“comment_status”] => (string)
[“ping_status”] => (string)
[“post_password”] => (string)
[“post_name”] => (string)
[“to_ping”] => (string)
[“pinged”] => (string)
[“post_modified”] => (string)
[“post_modified_gmt”] => (string)
[“post_content_filtered”] => (string)
[“post_parent”] => (int)
[“guid”] => (string)
[“menu_order”] => (int)
[“post_type”] => (string)
[“post_mime_type”] => (string)
[“comment_count”] => (string)
[“filter”] => (string)
}
Dựa vào giá trị nhận về từ tệp đính kèm thì chúng sẽ có thể làm cho xử lý của chúng ta đa dạng hơn. Đặc biệt, nếu Code của bạn Clear thì nó luôn giúp bạn thoải mái code mà không bị vấn đề xung đột nếu vô tình mắc phải. Cách để tối ưu không bị xung đột code cũng là điều quan trọng, và tối ưu tốc độ cũng là điều đặt ra phải có.