表示条件となる post_meta, meta_value が設定されるのは、「メディアを追加」で表示されるファイル(メディア)で良いでしょうか。
その場合であれば、ajax_query_attachments_args というフィルターを用いて、表示されるメディアの条件を変更することが可能です。ここで指定可能な条件は、WP_Queryのパラメータになりますので、ここでカスタムフィールドパラメータを指定することで実現可能だと思われます。
返信ありがとうございます!
教えていただいた情報を元に調べ、functionに以下のように記述してみましたが、すべてのデータが表示されてしまい、「abc」が含まれたデータのみ表示されませんでした。
エラーは出ておりません。
function display_only_self_uploaded_medias2( $wp_query ) {
if ( is_admin() && ( $wp_query->is_main_query() || ( defined( ‘DOING_QUERY_ATTACHMENT’ ) && DOING_QUERY_ATTACHMENT ) ) && $wp_query->get( ‘post_type’ ) == ‘attachment’ ) {
query_posts(
array( ‘key’=>’meta_value’,
‘value’=>’abc’,
‘compare’=>’LIKE’
)
);
}
}
function define_doing_query_attachment_const2() {
if ( ! defined( ‘DOING_QUERY_ATTACHMENT’ ) ) {
define( ‘DOING_QUERY_ATTACHMENT’, true );
}
}
get_currentuserinfo();
if($current_user->user_level < 10){
add_action( ‘pre_get_posts’, ‘display_only_self_uploaded_medias2’ );
add_action( ‘ajax_query_attachments_args’, ‘define_doing_query_attachment_const2’, 0 );
}
いただいたコードからは離れていただいた方がよいです。
このコードは、ver 3.5 で対応するコードで、3.7から追加となった ajax_query_attachments_args フィルターを使うと、もっと簡単にメディアの抽出条件を変更することが可能です。
Plugin API/Filter Reference/ajax query attachments args の Examples にメディアの表示をログイン中のユーザがアップロードした画像のみにするコードが掲載されていますので、こちらを参考にパラメータの指定を行ってみて下さい。
ご返信ありがとうございます。
張って頂いたURLを参考に作成してみましたが、今度は何も表示されず、ロード中を示す丸がぐるぐる回り続けている状態です。
以下ではだめなのでしょうか。
何から何まで聞いてすみません。
add_filter( ‘ajax_query_attachments_args’, ‘show_current_like_attachments’, 10, 1 );
function show_current_like_attachments( $query = array() ) {
$meta_query = array();
$meta_query[] = array(
‘key’=>’meta_value’,
‘value’=>’logo’,
‘compare’=>’LIKE’
);
$query->set( ‘meta_query’, $meta_query );
return $query;
}
Examples では、
$query['author'] = $user_id;
となっていますよね。
今回は、カスタムフィールドの設定を行いたいので、
$query['meta_query'] = $meta_query;
になるのではないでしょうか。
ご返信ありがとうございます。
ご指摘いただいたように修正したところ、ずっと丸が回り続けるということはなくなったのですが、1件も表示されません。
ヒットするキーワードを変えてみてもヒットしなかったので、「attachment_metadata」のほうも同時に指定しないといけないのかな?と感じています。
調べて修正してみます。
add_filter( ‘ajax_query_attachments_args’, ‘show_current_like_attachments’, 10, 1 );
function show_current_like_attachments( $query = array() ) {
$meta_query = array();
$meta_query[] = array(
‘key’=>’meta_value’,
‘value’=>’2015/08/logo.png’, //’logo’,
‘compare’=>’LIKE’
);
$query[‘meta_query’] = $meta_query;
return $query;
}