Wie erhält man die relative URL eines mittelgroßen vorgestellten Bildes?

Wie zeigt man eine relative (relativ große) relative URL (relativ zur Website)?

Ich brauche so etwas: uploads/214/07/image-600x400.png

Ich habe es versucht:

 if ( has_post_thumbnail()) { $medium_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'medium'); echo $medium_image_url[0]; } 

Es funktioniert gut, ich bekomme Pfad von mittelgroßen vorgestellten Bild, aber mit Domain-Namen auch, und ich brauche es ohne Domain-Namen.

Auch ich habe es so versucht:

 global $wpdb; $the_thumbnail_id = get_post_thumbnail_id($post->ID); $the_thumbnail_name = $wpdb->get_var( "SELECT meta_value FROM $wpdb->postmeta WHERE post_id = '$the_thumbnail_id' AND meta_key = '_wp_attached_file'" ); // echo $the_thumbnail_name; 

Das funktioniert gut, ich bekomme nur einen relativen Pfad, aber einen “voll” großen vorgestellten Bildpfad, und ich brauche einen “mittleren” vordefinierten Bildpfad.

Kann mir jemand helfen, vielleicht neu gestalten (Hinzufügen eines Parameters für “mittlere” Größe) der zweiten function oder ein neuer Ansatz?

Solutions Collecting From Web of "Wie erhält man die relative URL eines mittelgroßen vorgestellten Bildes?"

Du bist auf dem richtigen Weg mit deinem ersten Snippet – von dort ist es leicht, Teile der URL zu entfernen: überprüfe, was WP als Site-Root gespeichert hat, und verwende dann die String-functionen von PHP, um diesen Teil aus deiner Bild-URL herauszuschneiden.

 // inside the post loop, in a template file if ( has_post_thumbnail()) { $medium_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'medium'); $domain = get_site_url(); // returns something like http://domain.com $relative_url = str_replace( $domain, '', $medium_image_url[0] ); echo $relative_url; } 

Wenn Sie möchten, dass diese als wiederverwendbare function existiert:

 // functions.php function get_relative_thumb( $size ) { global $post; if ( has_post_thumbnail()) { $absolute_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), $size); $domain = get_site_url(); // returns something like http://domain.com $relative_url = str_replace( $domain, '', $medium_image_url[0] ); return $relative_url; } } // in a template file < ?php while (have_posts) : the_post(); // ... post loop content before the thumbnail echo get_relative_thumb( 'medium' ); // ... post loop content after the thumbnail endwhile; ?> 

(Hinweis – das Ergebnis wird wahrscheinlich immer noch den ‘wp-content /’ Teil des Pfades beinhalten; wenn Sie das entfernen müssen, so dass es nur bei ‘upload’ startet, fügen Sie einfach ‘wp-content’ an die $ domain Variable an bevor Sie str_replace ausführen (Wenn dies für die allgemeine Veröffentlichung vorgesehen ist, sollten Sie die integrierten functionen von wordpress verwenden, um den Pfad programmatisch zu erhalten, falls jemand nicht die typische ‘wp-content’ Verzeichnisstruktur verwendet.)