サポート » 使い方全般 » 「post_metaのmeta_valueに○○が含まれていれば表示する」制限をかけたい

  • wordpress4.2.2を使用しています。
    投稿画面の「メディアを追加」ボタンで表示される各ファイルに
    「post_metaのmeta_valueに○○が含まれていれば表示する」といった制限をかけたいです。
    色々と調べては実験しているのですが、完全にお手上げ状態で参っています。
    ご存知の方がいらっしゃいましたらどうぞご教授ください。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • モデレーター jim912

    (@jim912)

    表示条件となる post_meta, meta_value が設定されるのは、「メディアを追加」で表示されるファイル(メディア)で良いでしょうか。

    その場合であれば、ajax_query_attachments_args というフィルターを用いて、表示されるメディアの条件を変更することが可能です。ここで指定可能な条件は、WP_Queryのパラメータになりますので、ここでカスタムフィールドパラメータを指定することで実現可能だと思われます。

    トピック投稿者 hama_hard

    (@hama_hard)

    返信ありがとうございます!
    教えていただいた情報を元に調べ、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 );
    }

    モデレーター jim912

    (@jim912)

    いただいたコードからは離れていただいた方がよいです。
    このコードは、ver 3.5 で対応するコードで、3.7から追加となった ajax_query_attachments_args フィルターを使うと、もっと簡単にメディアの抽出条件を変更することが可能です。

    Plugin API/Filter Reference/ajax query attachments args の Examples にメディアの表示をログイン中のユーザがアップロードした画像のみにするコードが掲載されていますので、こちらを参考にパラメータの指定を行ってみて下さい。

    トピック投稿者 hama_hard

    (@hama_hard)

    ご返信ありがとうございます。
    張って頂いた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;
    }

    モデレーター jim912

    (@jim912)

    Examples では、

    $query['author'] = $user_id;

    となっていますよね。

    今回は、カスタムフィールドの設定を行いたいので、

    $query['meta_query'] = $meta_query;

    になるのではないでしょうか。

    トピック投稿者 hama_hard

    (@hama_hard)

    ご返信ありがとうございます。

    ご指摘いただいたように修正したところ、ずっと丸が回り続けるということはなくなったのですが、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;
    }

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「「post_metaのmeta_valueに○○が含まれていれば表示する」制限をかけたい」には新たに返信することはできません。