Nhận URL hình ảnh từ ID tệp đính kèm WordPress

URL của hình ảnh nổi bật có thể lấy ID đính kèm từ URL hình ảnh. Cuối cùng, chúng tôi mô tả ý tưởng và lợi ích của việc gọi các kích thước hình ảnh khác nhau trong wordpress. kích thước hình ảnh của hình ảnh đặc trưng

 

ID tệp đính kèm từ URL hình ảnh

dán đoạn mã dưới đây vào chức năng. php để đăng ký một chức năng. Sau này, chúng ta chỉ cần chuyển một url tới pp_get_image_id(url của hình ảnh) và nó sẽ cho chúng ta id của hình ảnh

// retrieves the attachment ID from url
function pp_get_image_id($image_url) {
global $wpdb;
$attachment = $wpdb->get_col($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE guid='%s';", $image_url ));
return $attachment[0];
}

Chỉ để minh họa, sử dụng hình ảnh từ thư viện phương tiện hoặc wordpress của bạn. Đọc cách lấy url ảnh đặc trưng trong wordpress. Chỉ cần chuyển tham số URL của hình ảnh để lấy ID đối với hình ảnh đó. Ý tưởng đằng sau điều này là gọi một hình ảnh có kích thước khác

// Image url to get the ID of
$img_url = 'https://propatel.com/wp-content/uploads/2011/02/14/image_name.jpg';

// store image id in variable
$image_id = pp_get_image_id($img_url);

// retrieve the thumbnail size of our image
$image_thumb = wp_get_attachment_image_src($image_id, 'thumbnail');

// display the image
echo $image_thumb[0];

Lợi ích để có được id đính kèm. Khi bạn muốn một hình ảnh ở nền “DIV” nhưng không phải là hình ảnh nổi bật. wp_get_attachment_url sẽ cung cấp url của url đính kèm cho postid. Giả sử bạn nhận được đường dẫn đính kèm hoặc url lớn hơn yêu cầu của bạn. Chúng tôi khuyên bạn nên gọi kích thước thu nhỏ hoặc kích thước trung bình bằng phương pháp trên để giảm thời gian tải

Tại sao ID tệp đính kèm từ hình ảnh được sử dụng?

ID tệp đính kèm từ URL hình ảnh được sử dụng để kết hợp kích thước hình ảnh khác trong các chủ đề hoặc plugin wordpress. Đọc Cách đăng ký các kích thước hình ảnh khác nhau trong wordpress hoặc đặt kích thước hình ảnh mặc định từ cài đặt> phương tiện trong wordpress (e. g. lớn, trung bình, hình thu nhỏ)

Kích thước hình ảnh trong WordPress ảnh hưởng đến SEO như thế nào

Thông thường, nhà phát triển cần giảm thời gian tải trang để có tỷ lệ phần trăm cao hơn trong bài kiểm tra tốc độ của google. Vì trong SEO, kích thước hình ảnh càng lớn thì cơ hội tải trang càng tăng. Trong khi làm việc với một chủ đề, tôi nhận ra tại sao không sử dụng kích thước hình ảnh nhỏ hơn để giảm thời gian tải để xếp hạng cao hơn

Lấy một URL hình ảnh WordPress và sử dụng nó để lấy ID tệp đính kèm hơi phức tạp. Có rất nhiều mẫu mã thực hiện điều này, nhưng tất cả chúng đều có vấn đề ở mức độ này hay mức độ khác

Pippin Williamson đã đăng một giải pháp rất hay dựa trên việc so sánh URL với hướng dẫn trong cơ sở dữ liệu WordPress, nhưng điều đó không thực sự hiệu quả nếu hướng dẫn không đồng bộ hoặc nếu URL bạn có là dành cho hình ảnh đã cắt

Phillip Newcomer nhận ra rằng dựa vào hướng dẫn không phải là cách tốt nhất và nên có cách lấy ID tệp đính kèm ngay cả khi bạn có URL hình ảnh đã cắt. Vì vậy, anh ấy đã viết một số mã loại bỏ kích thước hình ảnh mà WordPress thêm vào cuối tên tệp và sau đó kiểm tra tên tệp kết quả dựa trên khóa meta _wp_attached_file trong cơ sở dữ liệu. Điều này hoạt động tốt, hầu hết thời gian. Tuy nhiên, tên tệp sau khi loại bỏ kích thước hình ảnh không phải lúc nào cũng khớp với giá trị của _wp_attached_file, vì vậy trong những trường hợp đó, nó sẽ bị lỗi

Nếu chúng tôi tìm đến WordPress StackExchange, chúng tôi sẽ tìm thấy mã được viết bởi Andrey Savchenko (một. k. a. “Rarst”) có trước cả hai giải pháp trên và thực sự khắc phục được tất cả các vấn đề đã được đề cập trước đó. Trên thực tế, giải pháp của tôi phần lớn được lấy cảm hứng từ mã anh ấy đã viết. Vấn đề duy nhất với giải pháp mà anh ấy cung cấp là có thể có hai truy vấn được thực hiện để tìm một ID tệp đính kèm

Giải pháp của tôi là sử dụng logic mạnh mẽ và hợp lý mà Rarst đã sử dụng, nhưng để thực hiện công việc tương tự chỉ bằng một truy vấn duy nhất

Vì vậy, lần tới khi bạn tìm kiếm một giải pháp mã trên Google, đừng chỉ sử dụng mẫu mã đầu tiên mà bạn tìm thấy… ngay cả khi nó phù hợp với bạn. Tìm một số giải pháp thay thế. Đọc mã và suy nghĩ về các trường hợp sử dụng mà mã có thể bị hỏng. Quan trọng nhất, tìm hiểu những gì mã làm và không chỉ sao chép và dán. Chúng ta không cần phải duy trì các giải pháp tồi vì sự tiện lợi

Tôi muốn thách thức bạn luôn tìm thấy một thứ mà bạn có thể cải thiện khi quyết định sử dụng một đoạn mã. Trên thực tế, hãy bắt đầu với của tôi… bạn sẽ cải thiện nó như thế nào?

Trong ví dụ sau, đoạn mã này cho phép bạn lấy I. D từ một URL hình ảnh được thêm vào trường tùy chỉnh có tên hình ảnh

$url = get_post_meta( get_the_ID(), 'image', true );
$id  = attachment_url_to_postid( $url );

Người dùng Genesis có thể hoán đổi get_post_meta với genesis_get_custom_field

Kiểm tra mã

Để kiểm tra mã trả về tệp đính kèm chính xác tôi. d cho hình ảnh, bạn có thể sử dụng đoạn mã sau trong các chức năng chủ đề con của mình. tập tin php để xuất

add_action( 'the_post', 'convert_attachment_url_to_postid' );
function convert_attachment_url_to_postid() {

$url = get_post_meta( get_the_ID(), 'image', true );
$id  = attachment_url_to_postid( $url );
	
echo $id;
		
}

Bạn cũng có thể lấy tôi. d từ một URL thô như thế này

$url  = 'http://test.dev/wp-content/uploads/2017/10/img.jpg';
$id   = attachment_url_to_postid( $url );

Lấy tôi. D từ mảng URL

Nếu bạn đã thêm nhiều URL hình ảnh vào cùng một trường tùy chỉnh, bạn có thể sử dụng foreach với get_post_custom_values ​​để nhận tất cả các tệp đính kèm. d từ một mảng như thế này