Ich denke, es ist am besten, sich auf die native wp_get_attachment_image_src()
Funktion von WordPress zu verlassen, um verschiedene Bildgrößen zu erhalten. Aber dafür benötigen Sie die Anhangs-ID, nicht die URL. Die Funktion, um die URL in eine ID umzuwandeln:
function fjarrett_get_attachment_id_by_url( $url ) {
// Teilen Sie die $url in zwei Teile auf, wobei das wp-content-Verzeichnis als Trennzeichen verwendet wird
$parsed_url = explode( parse_url( WP_CONTENT_URL, PHP_URL_PATH ), $url );
// Holen Sie sich den Host der aktuellen Website und den Host der $url, ohne www
$this_host = str_ireplace( 'www.', '', parse_url( home_url(), PHP_URL_HOST ) );
$file_host = str_ireplace( 'www.', '', parse_url( $url, PHP_URL_HOST ) );
// Geben Sie nichts zurück, wenn keine $url-Teile vorhanden sind oder wenn der aktuelle Host und der $url-Host nicht übereinstimmen
if ( ! isset( $parsed_url[1] ) || empty( $parsed_url[1] ) || ( $this_host != $file_host ) ) {
return;
}
// Jetzt suchen wir schnell in der Datenbank nach einem Anhangs-GUID mit einer teilweisen Pfadübereinstimmung
// Beispiel: /uploads/2013/05/test-image.jpg
global $wpdb;
$attachment = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM {$wpdb->prefix}posts WHERE guid RLIKE %s;", $parsed_url[1] ) );
// Gibt null zurück, wenn kein Anhang gefunden wird
return $attachment[0];
}
Dank an Frankie Jarrett.
Dann können Sie leicht andere Größen erhalten:
$medium_image = wp_get_attachment_image_src( fjarrett_get_attachment_id_by_url($image_link), 'medium');
Wenn Sie den Link von diesem Bild benötigen:
$medium_image_link = $medium_image[0];
$html = '';