2 Stimmen

Wordpress Bildgröße basierend auf der URL

Ich verwende ein benutzerdefiniertes Feld, um die URL eines Bildes auszuwählen.

Mein Kunde fügt alle Bilder ein und lädt sie hoch, daher muss dies wirklich einfach sein. Deshalb versuche ich, dies im Hintergrund zu regeln.

Das Problem, auf das ich gestoßen bin, ist, dass ich nur die URL des Bildes in voller Größe habe, was die Ladezeit wirklich verlangsamt.

Gibt es eine Möglichkeit, ein Vorschaubild oder eine andere Bildgröße basierend auf der URL des Bildes in voller Größe einzufügen?

Ich habe das hier versucht, was irgendwie funktioniert, aber das Problem, das ich habe, ist, dass einige Bilder nicht dieselbe Auflösung haben, daher muss dies dynamischer erfolgen.

4voto

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 = '';

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X