サポート » マルチサイト » マルチサイトにおいて子サイトごとの使用容量を知る方法

  • 解決済 wackey

    (@wackey)


    通常インストールのWordPressnのサイトヘルス機能では「ディレクトリとサイズ」の項目でアップロードディレクトリのサイズを知ることが出来ます。
    一方マルチサイトのサイトヘルス場合、「ディレクトリとサイズ」が表示されません。
    マルチサイトではそれぞれのサイトに容量制限がかけられますが、いまどれぐらい使っているかを把握したいです。
    知る方法はありますでしょうか。

    PHPコードを書く方法でも構いませんので、ヒントをいただけると大変助かります。
    何卒ご教示いただけますと幸いです。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • こんにちは

    今後のリリース(Future Release)で機能の追加は検討されていますね。いつになるかは分かりませんが・・・。
    https://core.trac.wordpress.org/ticket/46967

    パッチがあるので試してみてはと思います。

    ダッシュボードに、アップロードディレクトリのサイズを表示するサンプルコードを書いてみました。
    この中で使用している recurse_dirsize() でサイズを取得しています。なお、実際の運用で使用する場合は、recurse_dirsize() はディレクトリやファイルが多くなると処理に時間が掛かるので、なにか工夫(キャッシュや ajax など)する必要がでてきそうです。

    function dashboard_dirinfo_widget_setup() {
    	if ( is_multisite() ) {
    		wp_add_dashboard_widget(
    			'dirinfo_widget', // ウィジェットを一意識別するスラッグ
    			'ディレクトリサイズ', // ウィジェットのヘッダに表示される名前
    			'dashboard_dirinfo_widget' // ウィジェットのコンテンツを表示するように作成した関数の名前
    		);
    	}
    }
    
    add_action( 'wp_dashboard_setup', 'dashboard_dirinfo_widget_setup' );
    
    function dashboard_dirinfo_widget() {
    	$upload_dir = wp_get_upload_dir();
    	$dir_size = recurse_dirsize( $upload_dir['basedir'] );
    
    	echo '<ul>';
    	printf( '<li>アップロードディレクトリのサイズ: %s</li>', size_format( $dir_size, 2) );
    	printf( '<li>サイトのアップロード容量: %s MB</li>', get_space_allowed() );
    	printf( '<li>アップロードファイルの最大サイズ: %s KB</li>', get_site_option( 'fileupload_maxk', 1500 ) );
    	echo '</ul>';
    }

    早速サンプルコード、ありがとうございます。
    一旦プラグイン化して動作確認までできました。
    ご提案いただいているように、キャッシュやajax使用を検討したいと思います。

    この度はご教示頂き、誠にありがとうございました、

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • このトピックに返信するにはログインが必要です。