サポート » 使い方全般 » アップロードファイルのURL

  • 解決済 wpfreaks

    (@wpfreaks)


    アップロードファイルのURLは、例えばmp3場合

    <?php
    $files = get_children('post_parent=' . $post->ID . '&post_type=attachment&post_mime_type=audio/mpeg');
    // print_r($files);
    $keys = array_keys($files);
    $num = $keys[0];
    // print_r($num);
    $file_url = wp_get_attachment_url($num);
    ?>
    <?php echo clean_url($file_url); ?>

    などで取得できると思いますが、
    この場合、取得されるURLはhttp://example.com/から始まるURLです。

    これをhttp://example.com/を取り除き
    wp-content/upload/から始まるURLにかえる、または別の方法で同じようなURLを取得する事は出来るのでしょうか?

    理由はmp3ファイルなどアパッチの設定などを使わずに(IEなどでスルーされるため)強制的にダウンロードさせたかったので
    http://elouai.com/force-download.php
    ここにあるphpプログラムを拝借したのですが

    http://example.com/force-download.php?file=http://example.com/wp-content/upload/xxx.mp3
    だとだめで、

    http://example.com/force-download.php?file=wp-content/upload/xxx.mp3
    だと大丈夫なためです。

    根本的な質問かもしれませんがよろしくお願いします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • 単純に、$file_urlを文字列を置換して、2度目の「http://example.com/」を削れば
    良いだけじゃないですか?phpのmberegi_replaceとか使って・・・
    正規表現の書き方とかは、他のサイトでお調べくださいまし。

    それとも、セキュリティ上の問題とか、アップロードディレクトリが
    違うときとか、そういうことを質問されているんですかね?

    トピック投稿者 wpfreaks

    (@wpfreaks)

    あ、そうです、アップロードディレクトリが違う場合とか。
    それとmberegi_replaceを使わない方法とかあるのかと思い。
    普通にphpの質問だからwordpressでもしかしたら自分が知らない方法があるのかと思い質問してみました。やっぱりセキュリティやディレクトリの問題がなければこの方法ですよね。

    動作確認してませんが、英文のcodexには、
    http://codex.wordpress.org/Function_Reference/get_attached_file

    <?php get_attached_file( $attachment_id, $unfiltered ); ?>

    で、pathが帰ってくるって書いてあるようなので、
    試してみてはいかがですか?

    トピック投稿者 wpfreaks

    (@wpfreaks)

    ありがとうございます。
    もう少し色々自分で調べてみて試してみます。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「アップロードファイルのURL」には新たに返信することはできません。