attachment_url_to_postid()
最后更新于:2021-11-25 19:51:18
attachment_url_to_postid( string$url)Tries to convert an attachment URL into a post ID.
参数
- $url
-
(string) (Required) The URL to resolve.
响应
(int) The found post ID, or 0 on failure.
源文件
文件: gc-includes/media.php
function attachment_url_to_postid( $url ) {
global $gcdb;
$dir = gc_get_upload_dir();
$path = $url;
$site_url = parse_url( $dir['url'] );
$image_path = parse_url( $path );
// Force the protocols to match if needed.
if ( isset( $image_path['scheme'] ) && ( $image_path['scheme'] !== $site_url['scheme'] ) ) {
$path = str_replace( $image_path['scheme'], $site_url['scheme'], $path );
}
if ( 0 === strpos( $path, $dir['baseurl'] . '/' ) ) {
$path = substr( $path, strlen( $dir['baseurl'] . '/' ) );
}
$sql = $gcdb->prepare(
"SELECT post_id, meta_value FROM $gcdb->postmeta WHERE meta_key = '_gc_attached_file' AND meta_value = %s",
$path
);
$results = $gcdb->get_results( $sql );
$post_id = null;
if ( $results ) {
// Use the first available result, but prefer a case-sensitive match, if exists.
$post_id = reset( $results )->post_id;
if ( count( $results ) > 1 ) {
foreach ( $results as $result ) {
if ( $path === $result->meta_value ) {
$post_id = $result->post_id;
break;
}
}
}
}
/**
* Filters an attachment ID found by URL.
*
* @since 4.2.0
*
* @param int|null $post_id The post_id (if any) found by the function.
* @param string $url The URL being looked up.
*/
return (int) apply_filters( 'attachment_url_to_postid', $post_id, $url );
}