1

メタ値配列にある場合、現在のユーザーの cpt を照会するのに問題があります。

クエリ引数

$args = [
    'post_type'      => $cp::get_module_cpt(),
    'posts_per_page' => - 1,
    'meta_query'     => [
        'relation' => 'AND',
        [
            'key'     => 'premium_module',
            'value'   => 0,
            'compare' => '=',
        ],
        [
            'key'     => 'permit_users',
            'value'   => get_current_user_id(),
            'compare' => 'IN',
        ],
    ],
];

メタキー

permit_users

メタ値

値がある場合

データベース

a:5:{i:0;s:2:"23";i:1;s:1:"2";i:2;s:1:"6";i:3;s:1:"7";i:4;s:2:"27";}

PHPで

Array
(
    [0] => 29
    [1] => 28
    ...
)

値がない場合

false または空の配列を返します。以前にフィールドを設定したかどうかによって異なります。

さらに、

compare を=equal に設定しようとしましたが、それもうまくいきませんでした。おそらく値が配列にあるためです。

結果探し

クエリは、キーに現在のユーザー ID を持つすべての投稿を返す必要がありpermit_usersます。

重要:
permit_usersオプションであるため、フィールドに値がない (false) または空の配列の場合、クエリはそれを無視する必要があります。

アップデート

私はそれがうまくいっていると比較してみLIKEました。しかし、シリアル化されたデータを比較するのは良いことでしょうか? 現在のユーザーが11あり、値に111ユーザーが含まれている場合はどうなりますか?

4

1 に答える 1