Dateipfad ohne Domänennamen von wp_get_attachment_url()

Lesezeit: 3 Minuten

wp_get_attachment_url() verarbeitet den vollständigen Dateipfad wie

http://example.com/wp-content/uploads/2014/12/aura.mp3

Ich möchte die URL ohne http://example.com/
Also, ich möchte obiges Beispiel als wp-content/uploads/2014/12/aura.mp3 Anstatt von http://example.com/wp-content/uploads/2014/12/aura.mp3. Wie es geht?

  • Ich möchte es für getid3, weil getid3 keine Remote-URL unterstützt

    – Sahriar Saikat

    31. Dezember 2014 um 8:12 Uhr

  • siehe bitte hier wordpress.stackexchange.com/questions/144409/…

    – gaurav kumar

    31. Dezember 2014 um 8:23 Uhr

  • @gauravkumar Ich bin kein Profi. Meine Dateien sind mp3. also ist image bissue verwirrend\

    – Sahriar Saikat

    31. Dezember 2014 um 8:31 Uhr

Benutzer-Avatar
Roope Hakulinen

Kannst du ganz einfach explodieren es durch / und dann das Teil mit Index 3 nehmen. Beispiel

$url = wp_get_attachment_url(id); //id is file's id
$urllocal = explode(site_url(), $url)[1]; //output local path

  • es gibt nur wp-content zurück, nicht den vollständigen Dateipfad

    – Sahriar Saikat

    31. Dezember 2014 um 8:32 Uhr

  • Bist du sicher, dass du die neuste Version ausprobiert hast? Ich musste es korrigieren, nachdem ich es gepostet hatte.

    – Roope Hakulinen

    31. Dezember 2014 um 8:34 Uhr

  • Ich habe das benutzt $mp3remoteurl = wp_get_attachment_url($_GET["id"]); $mp3localurl = ''.explode("/", $mp3remoteurl)[1].'/'.explode("/", $mp3remoteurl)[2].'/'.explode("/", $mp3remoteurl)[3].'/'.explode("/", $mp3remoteurl)[4].'/'.explode("/", $mp3remoteurl)[5].''; um wp-content/uploads/2014/12/aura.mp3 zu bekommen, aber das ist nicht der richtige Weg. Habe ich nicht recht?

    – Sahriar Saikat

    31. Dezember 2014 um 8:37 Uhr

  • Ja. wp 4.1 – neueste Version und es ist in localhost

    – Sahriar Saikat

    31. Dezember 2014 um 8:37 Uhr


  • @SahriarSaikat: Nun, es ist eine Möglichkeit, es zu tun, aber sicher nicht die schönste. Aus diesem Grund habe ich meinen Code so geändert, dass er beim Auflösen mit dem Servernamen funktioniert: explode(“example.com/”, $url)[1];

    – Roope Hakulinen

    31. Dezember 2014 um 8:38 Uhr

So nutzt WordPress WordPress-Funktionen (Hacking vermeiden):

$fullsize_path = get_attached_file( $attachment_id ); // Full path
$filename_only = basename( get_attached_file( $attachment_id ) ); // Just the file name

WordPress hat unzählige Funktionen, also versuchen Sie zuerst, die Funktion in den Dokumenten zu finden: https://developer.wordpress.org/reference/functions/get_attached_file/

Sie können die Funktion von PHP verwenden explode.

Hier ist der Code:

    <?php
         $image_url = wp_get_attachment_url( 9 ); //ID of your attachment
         $my_image_url = explode("https://stackoverflow.com/",$image_url,4);
         echo $my_image_url[3];
    ?>

  • Vielen Dank. Übrigens habe ich die richtige Antwort bekommen.

    – Sahriar Saikat

    31. Dezember 2014 um 9:00 Uhr

  • Tatsächlich verwenden site_url() ist ziemlich gut. Es kam mir nicht in den Sinn 🙂

    – Rohil_PHPBeginner

    31. Dezember 2014 um 9:05 Uhr

  • Yup ..Fröhliches Programmieren! 🙂

    – Rohil_PHPBeginner

    31. Dezember 2014 um 9:10 Uhr


Du kannst implode Ihre gesamte URL auf / und array_slice vom Ende, dann implodieren Sie es wieder auf /.

$url = wp_get_attachment_url($item->ID); //id is file's id
$url_relative = implode(array_slice(explode("https://stackoverflow.com/", $url),-3,3),"https://stackoverflow.com/");
//Returns: 2019/08/image.jpg

Auf diese Weise stürzt es nicht ab, wenn sich Ihr WordPress auf einer Subdomain oder einem lokalen Host befindet oder sich die Bilder auf S3 befinden.

1017570cookie-checkDateipfad ohne Domänennamen von wp_get_attachment_url()

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy