META_QUERY:检查数字是否存在

时间:2015-10-28 作者:marcelo2605

我使用以下查询检查自定义元字段中是否存在用户id:

\'meta_query\' => array(
    array(
        \'key\'     => \'participantes\',
        \'value\'   => $user_id,
        \'compare\' => \'IN\',
    ),
)
现场participantes 存储由逗号分隔的用户ID,如345,1,34.

这仅在当前用户id是列表中的第一个数字时有效。

2 个回复
最合适的回答,由SO网友:M-R 整理而成

我认为,更可靠的解决方案是允许自定义字段“参与者”的多个值。您可以按如下方式存储

add_post_meta($post_id,\'participants\',\'value1\');
add_post_meta($post_id,\'participants\',\'value2\');
add_post_meta($post_id,\'participants\',\'value3\');
add_post_meta($post_id,\'participants\',\'value4\');
删除类似于

delete_post_meta($post_id,\'participants\',\'value1\');
然后,查询将更改为更简单的查询。

\'meta_query\' => array(
    array(
        \'key\'     => \'participants\',
        \'value\'   => $user_id,
        \'compare\' => \'=\',
    ),
)
如果要进行阵列实现,可以按以下方式存储值

$array = array(\'value1\',\'value2\',\'value3\');
update_post_meta($post_id,\'participants\',$array);
搜索可以这样做

\'meta_query\' => array(
    array(
        \'key\'     => \'participants\',
        \'value\'   => \'"\'.$userid.\'"\',
        \'compare\' => \'LIKE\',
    ),
)
Source 用于在序列化数组中搜索

这样,它将搜索整个ID,包括序列化数组中ID前后的双引号。不包括误报。

SO网友:shadylane

仅仅因为该值是由逗号分隔的一系列ID,并不意味着它将被识别为一个数组。请尝试以下操作。

\'meta_query\' => array(
    array(
        \'key\'     => \'participantes\',
        \'value\'   => explode( ",", $user_id),
        \'compare\' => \'IN\',
    ),
)

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post