Get image id from image url wordpress

Get image id from image url wordpress

Giả thiết đặt ra: Bạn cần get list ID của media từ link ảnh để làm một số tính năng gì đó cho website của mình.
Vậy thì đoạn code bên dưới sẽ giúp bạn giải quyết ổn thỏa vấn đề nha.

Thêm đoạn code sau vào file Functions.php

/*convert image URL to Image ID*/
function pn_get_attachment_id_from_url( $attachment_url = '' ) {
 
  global $wpdb;
  $attachment_id = false;
 
  // If there is no url, return.
  if ( '' == $attachment_url )
    return;
 
  // Get the upload directory paths
  $upload_dir_paths = wp_upload_dir();
 
  // Make sure the upload path base directory exists in the attachment URL, to verify that we're working with a media library image
  if ( false !== strpos( $attachment_url, $upload_dir_paths['baseurl'] ) ) {
 
    // If this is the URL of an auto-generated thumbnail, get the URL of the original image
    $attachment_url = preg_replace( '/-\d+x\d+(?=\.(jpg|jpeg|png|gif)$)/i', '', $attachment_url );
 
    // Remove the upload path base directory from the attachment URL
    $attachment_url = str_replace( $upload_dir_paths['baseurl'] . '/', '', $attachment_url );
 
    // Finally, run a custom database query to get the attachment ID from the modified attachment URL
    $attachment_id = $wpdb->get_var( $wpdb->prepare( "SELECT wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = '_wp_attached_file' AND wpostmeta.meta_value = '%s' AND wposts.post_type = 'attachment'", $attachment_url ) );
 
  }
 
  return $attachment_id;
}

 

Cách sử dụng thì các bạn xem ở đây nha.
$img_url = ‘xxxxxxxxxxxxx’;

//Đây là link của hình ảnh trong website.

$img_id = pn_get_attachment_id_from_url($img_url);

//Tiến hành chuyển đổi link ảnh sang ID

 

Bonus thêm: Get thêm alt cho hình ảnh để phục vụ cho anh em làm SEO nè.
$alt_text = get_post_meta($img_id , ‘_wp_attachment_image_alt’, true);

Cám ơn các bạn, nếu thấy hữu ích hãy subscrible để nhận thêm được nhiều thông tin nhé.

Share this post

Post Comment