サポート » 使い方全般 » メディアライブラリで他の人がアップした画像を非表示にした

  • 解決済 natsu85

    (@natsu85)


    いつもお世話になっております。
    メディアライブラリで編集者以下の人には編集者以上がアップした画像を非表示にしたいと思い、LIGさんのサイト
    http://liginc.co.jp/programmer/archives/4054
    こちらを参考に設定してみました。
    ただこちらに記載のコードではリスト表示では反映されているのですが、グリッド表示に変更すると全部出てしまっている状態です。
    グリッド表示でも同じように制限する、もしくは投稿者にはグリッド表示を非表示にするやり方はあるでしょうか?

    ご教授お願い致します。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • こんにちは、natsu85さん。

    ちょうど今日、ユーザーではないですが、特定のポストタイプに紐づくアタッチメントを非表示にするというのをやったので、それを少し変えてみました。

    function _users_own_attachments( $wp_query ) {
    	global $current_user, $pagenow;
    
    	if ( ! is_a( $current_user, 'WP_User' ) || ! in_array( $pagenow, array( 'upload.php', 'media-upload.php', 'admin-ajax.php' ) ) ) {
    		return;
    	}
    
    	if ( ! isset( $wp_query->query_vars['post_type'] ) || 'attachment' !== $wp_query->query_vars['post_type'] ) {
    		return;
    	}
    
    	if( ! current_user_can( 'edit_others_posts' ) ) {
    		$wp_query->set( 'author', $current_user->ID );
    	}
    
    	return;
    }
    add_action( 'pre_get_posts', '_users_own_attachments' );

    他のプラグインで ajax を使った時に影響がでる可能性を否定できないので、その辺り念入りにチェックしてください。
    ※ 関数名が変なのは適当に変えてくださいw

    KUCKLU様

    遅くにありがとうございました!!
    非表示になりました!!

    他のプラグインに影響があるとしてもattachmentがインしている時だけ影響する可能性があるということであっていますでしょうか??

    はい、post_type => attachment として、get_posts などで投稿データを取得している場合に影響ができる可能性があります。特に、最近流行りの REST API を使用して Ajax でかっこいいサイトを作成している場合は、動作確認を念入りにお願いします。

    ちゃんと検証していないので、大丈夫!といないくてすみません。

    モデレーター jim912

    (@jim912)

    jim912 さん、いつもお世話になってます!
    過去記事はヒントの山です。ありがとうございます。

    僕も最初、ajax_query_attachments_args を使ったやり方で「できたー!」てなったんですけれど、メディアライブラリの表示を、グリッドからリストに変えると、非表示にしたはずの全てのアタッチメントが表示されます。

    僕は、ここで悩んで、pre_get_posts にたどり着きました。

    モデレーター jim912

    (@jim912)

    そうですね。ajax_query_attachments_argsは、ajaxの時しか動作しませんから。

    ただし、より限定的にするという意味では、グリッド表示の時には ajax_query_attachments_args を利用し、リスト表示の際には pre_get_posts を利用するのが一番影響範囲が少なくなるように思います。

    KUCKLU様、jim912様
    お返事遅くなってしまい申し訳ありません。

    お2人共本当にありがとうございます。

    今回は投稿者が管理画面にログインした場合、メディアは非表示にしました。ブログの投稿から写真を投稿する場合がリスト表示ではなくグリッド表示のみになるので、ここをほかの人がUPした写真を非表示になればと思っているので、ajax_query_attachments_argsを使用してみたのですが、投稿からUPする際に「フォルダを選択」等が表示されなくなってしまいました。私のやり方がちがったのかもしれませんが…

    メニューからメディアを非表示にしただけで、使えなくなってるわけではないの今回はpre_get_postsを使用することに致しました。

    REST APIも使用していませんし、post_type => attachmentでは指定せずに共通の親カテゴリ名で取得する予定です。
    もう少し検証してみないと分からない部分もあるかと思いますが、問題なければこれで進めていきたいと思います。

    お2人共本当にありがとうございましたm(_ _)m

    解決済みにしていませんでした。
    申し訳ありません。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「メディアライブラリで他の人がアップした画像を非表示にした」には新たに返信することはできません。