• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

関数リファレンス/wp upload dir

提供: WordPress Codex 日本語版
移動先: 案内検索

この項目「関数リファレンス/wp upload dir」は、翻訳チェック待ちの項目です。加筆、訂正などを通して、Codex ドキュメンテーションにご協力下さい。

説明

現在の upload ディクレトリのパスと URL を入れた配列を取得します。

まず 'upload_path' オプション(web ルートフォルダからの相対パスのはず)をチェックし、空でなければそれを使います。空なら、パスを 'WP_CONTENT_DIR/uploads' にします。もし 'UPLOADS' 定数が定義されていれば、'upload_path' オプションと 'WP_CONTENT_DIR/uploads' パスの両方を上書きします。

upload の URL パスは 'upload_url_path' オプションまたは 'WP_CONTENT_URL' 定数のどちらかを使って、それに '/uploads' を付加したパスにします。

もし 'uploads_use_yearmonth_folders'true なら(管理画面で「アップロードしたファイルを年月ベースのフォルダに整理」にチェックを入れれば)、時刻が使われます。パスの形式は年が先でその後が月です。

参考: ‘upload_path’ オプションは WordPress 3.5 で廃止されました。そのため、これのチェックは後方互換性のためだけに残されています。

使い方

wp_upload_dir ( $time, $create_dir, $refresh_cache )

パラメータ

$time
文字列) (オプション'yyyy/mm' 形式に整形済みの時刻。
初期値: null
$create_dir
真偽値) (オプション) uploads ディレクトリのチェックと作成を行うかどうか。後方互換性のため true がデフォルトです。
初期値: true
$refresh_cache
真偽値) (オプション) キャッシュを更新するかどうか。
初期値: false

戻り値

(配列) 
ディレクトリのパスと URL を入れた配列、またはエラーメッセージを入れた配列。

もしパスを作れなければ、キー 'error' に値としてエラーメッセージを入れた配列を返します。親ディクレトリの書き込み許可がない可能性があります。

成功すると、返される配列にはたくさんのインデックスが含まれます:

  • 'path' – ベースディレクトリとサブディクレトリを結合したパス、または upload ディクレトリのフルパス。
  • 'url' – ベース url とサブディクレトリを結合した URL、または upload ディレクトリの絶対 URL。
  • 'subdir' – 「アップロードしたファイルを年月ベースのフォルダに整理」が有効な場合、サブディレクトリ。
  • 'basedir' – サブディレクトリを含まないパス。
  • 'baseurl' – サブディレクトリを含まない URL パス。
  • 'error' – false またはエラーメッセージ。

用例

upload ディクレトリの URL を取得する基本的な例

<?php $upload_dir = wp_upload_dir(); ?>
<?php echo $upload_dir['baseurl']; ?>

ユーザーごとのカスタムフォルダを作成

global $current_user;
get_currentuserinfo();
 
$upload_dir = wp_upload_dir();
$user_dirname = $upload_dir['basedir'] . '/' . $current_user->user_login;
if ( ! file_exists( $user_dirname ) ) {
    wp_mkdir_p( $user_dirname );
}

返されるデータの詳細

<?php
$upload_dir = wp_upload_dir(); // 「キー => 値」ペアの配列
/*
    $upload_dir は例えば次のような内容を持つ(成功したとき)
    Array (
        [path] => C:\path\to\wordpress\wp-content\uploads\2010\05
        [url] => http://example.com/wp-content/uploads/2010/05
        [subdir] => /2010/05
        [basedir] => C:\path\to\wordpress\wp-content\uploads
        [baseurl] => http://example.com/wp-content/uploads
        [error] =>
    )
*/
 
echo $upload_dir['path'] . '<br />';
echo $upload_dir['url'] . '<br />';
echo $upload_dir['subdir'] . '<br />';
echo $upload_dir['basedir'] . '<br />';
echo $upload_dir['baseurl'] . '<br />';
echo $upload_dir['error'] . '<br />';
 
$upload_url = ( $upload_dir['url'] );
$upload_url_alt = ( $upload_dir['baseurl'] . $upload_dir['subdir'] );
 
// upload ディレクトリの URL パスを出力
echo $upload_url . '<br />'; // 出力例 - http://example.com/wp-content/uploads/2010/05
 
// ベース URL と年月ディレクトリを結合。上記と同じになる。
echo $upload_url_alt . '<br />'; // 出力例 - http://example.com/wp-content/uploads/2010/05
?>


参考

年月フォルダの作成

$time が指定されて(省略すると現在の年月)対応するフォルダがなければ、この関数は uploads フォルダ内にサブフォルダを作ります。このフォルダを作成するために何かをアップロードする必要はありません。

フォルダの名前

/uploads フォルダを移動したければ、UPLOADS 定数を使う必要があります。これは、ふつうは使うべきではありませんが(マルチサイトの場合のみ ms_default_constants() の実行時に定義されます)、次のように簡単に設定できます:

define( 'UPLOADS', trailingslashit( WP_CONTENT_DIR ) . 'custom_uploads_name' );

これはシングルサイトのインストールでもちゃんと動作します。そのとき公開ディレクトリ構造を取得する関数 wp_upload_dir() が次のようにパスを定義します:

$dir = ABSPATH . UPLOADS;

参考: 以下のコードでフォルダ名を抜き出すことができます:

// UPLOADS 定数が未定義なら `false` を返す
$upload_dir_name = false;
if ( defined( 'UPLOADS' ) ) {
    str_replace( trailingslashit( WP_CONTENT_DIR ), '', untrailingslashit( UPLOADS ) );
}


変更履歴

新規導入: WordPress 2.0.0

ソースファイル

wp-includes/link-functions.php にあります。

WordPress ディレクトリ:
home_url() ホーム URL http://www.example.com
site_url() サイトディレクトリ URL http://www.example.com または http://www.example.com/wordpress
admin_url() 管理画面ディレクトリ URL http://www.example.com/wp-admin
includes_url() /en インクルードディレクトリ URL http://www.example.com/wp-includes
content_url() /en コンテンツディレクトリ URL http://www.example.com/wp-content
plugins_url() /en プラグインディレクトリ URL http://www.example.com/wp-content/plugins
wp_upload_dir() /en アップロードディレクトリ URL (配列を返す) http://www.example.com/wp-content/uploads


関数リファレンステンプレートタグ目次もご覧ください。


最新英語版: Code Reference / Functions / wp_upload_dir()