web-dev-qa-db-ja.com

ユーザーごとに別々のメディアライブラリ

私はクライアントのためのテーマを作成しています、そして、彼らの要求の1つはユーザーが彼ら自身の使用のために画像をアップロードすることを許可することですが、画像を共有するオプションがあるかもしれません。

ここにいくつかの警告があります:

  • 各ユーザーは、自分の画像を自分のメディアライブラリにアップロードすることができます。
  • これらの画像は、現在「投稿」に「タグ」を付ける方法とまったく同じように「タグを付ける」ことができなければなりません。
  • 管理者はこれらの画像も管理できます。

第一に、これは可能であり、画像のための「タグ」分類法を作成することは可能ですか?

ご協力いただきありがとうございます。

6
Anthony

機能を内蔵

メディアライブラリには、次期バージョンのメジャーアップデートがあります。 Daryl Koopersmithによるスライドの変更をここで見ることができます"Make"に関する発表と議論を読むことができます

"tags/categories"に対するあなたの要求はすでに3.5に組み込まれています。

注意

テーマとプラグインの違いは非常に簡単です。表示と機能性。そのため、そのような機能をテーマに組み入れないで、プラグインとして分離しておくことをお勧めします。これを行うことによるあなたの利益:あなた/あなたのクライアントは、アップデートやテーマ変更の際にこの機能を失うことはないでしょう。それは単にあなたの人生をずっと楽にします。想像してみてください、あなたはこれを要求する別のクライアントを得ました。それからあなたは単にあなたのテーマからこれをリッピングしてそれを次のテーマに移動する代わりにあなたの既存のプラグインを単にアップロードするでしょう。

3
kaiser

カイザーが言ったように、WordPressの次のバージョンではメディアライブラリは投稿/​​ページインターフェースに近いUIを使います。

メディアライブラリは基本的に「添付ファイル」と呼ばれるCPTなので、コメントを付け、投稿メタを作成し、分類法を「添付ファイル」投稿タイプに割り当てることができます。

3.4.2はこのすべてをサポートしていますが、メディアタイプの分類UIは表示されません。 3.5です。

タグ付けは完了です。

すべてを管理者に見せるために、そして個々のユーザに彼ら自身のメディアライブラリを与えるために?バックエンドでのみ実行されるpre_get_postsフィルタを使用し、ユーザーがロール管理者以上ではなく、クエリが 'attachment'タイプの投稿を探している場合にのみ、 'author'に基づいてそれらを除外する必要があります'。

3
Tom J Nowell

このQ&A は、ユーザーロールがダッシュボードに表示できる投稿を制限する方法を示します。添付ファイルの部分が欠けていました。

add_filter( 'pre_get_posts', 'wpse_72278_current_author_media' );
add_filter( 'views_upload', 'wpse_72278_custom_view_count', 10, 1 );

function wpse_72278_current_author_media( $query ) 
{
    global $pagenow, $user_ID;

    if( 'upload.php' !== $pagenow )
        return $query;

    if ( $query->is_admin && current_user_can( 'editor' ) ) 
        $query->set( 'author', $user_ID );      

    return $query;
}

function wpse_72278_custom_view_count( $views ) 
{
    global $user_ID, $wpdb;

    if ( !current_user_can('editor') ) 
        return $views;

    $total = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts 
        WHERE post_author = '$user_ID'
        AND post_type = 'attachment' " );
    $image = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts 
        WHERE post_author = '$user_ID' 
        AND post_mime_type LIKE 'image/%' " );
    $video = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts 
        WHERE post_author = '$user_ID' 
        AND post_mime_type LIKE 'video/%' " );
    $detached = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts 
        WHERE post_author = '$user_ID' 
        AND post_type = 'attachment' AND post_parent = '0' " );

    $views['all'] = preg_replace( '/\(.+\)/U', '('.$total.')', $views['all'] ); 
    $views['image'] = preg_replace( '/\(.+\)/U', '('.$image.')', $views['image'] ); 
    $views['video'] = preg_replace( '/\(.+\)/U', '('.$video.')', $views['video'] ); 
    $views['detached'] = preg_replace( '/\(.+\)/U', '('.$detached.')', $views['detached'] ); 

    return $views;
}

この他の はある作者が所有する投稿の問題と別の作者が作成したアップロードの面倒を見ます。

そして、まだ3.5に飛び込んでいないのであれば、 この最後の /添付ファイルのカスタムフィールドを処理します。

3
brasofilo