将数组作为元值的GET_USERS

时间:2020-02-25 作者:otpabu

我的WordPress用户有一个自定义的生日元密钥(DD/MM/AAAA,例如2020年2月25日)。

如果我想让所有用户今天(2002年2月25日)出生,我可以使用:

$todays_birthday=\'25/02/\';
get_users(array(\'meta_compare\'=>\'like\', \'meta_key\'=>\'birthday\', \'meta_value\'=>$todays_birthday));
它工作完美,返回所有今天出生的用户。

我的问题是:如果我想让所有用户在整个星期内出生,该怎么办?E、 g.:

$todays_birthday=array(\'24/02/\', \'25/02/\', \'26/02/\', \'27/02/\', \'28/02/\', \'29/02/\', \'01/03/\');
我的get\\u users查询是什么?

我已经尝试了我在网上找到的所有解决方案,但都没有成功,它们都没有返回任何结果。

1 个回复
SO网友:Tom J Nowell

首先,可以使用meta_query, 但是,您应该更改值以使用正确的日期格式,例如2020年1月2日为2020年1月2日,而不是区域格式。看见https://en.wikipedia.org/wiki/ISO_8601 了解更多详细信息。

第二,你的LIKE 查询将非常昂贵,并且在仍然使用LIKE 查询将更加昂贵。因此,存储第二个包含月份和日期的用户元,但始终将年份设置为相同的值

然后,执行类似的操作:

get_users( [
    \'meta_query\' => [
        [
            \'meta_key\'   => \'birthday_no_year\',
            \'compare\'    => \'BETWEEN\',
            \'meta_value\' => [ \'2000/01/01\', \'2000/02/01\' ],
            \'type\'       => \'DATE\'
        ]
    ]
]);
注意事项:

您需要编写代码来存储birthday_no_year 值也一样,您需要为现有用户添加这些值,搜索具有特定元值的对象非常昂贵,无论是按帖子元搜索/过滤帖子,还是按用户元过滤用户。它不可扩展,而且可能会变得非常昂贵,导致服务器停机。缓存此数据并寻找其他存储数据的方法

相关推荐

在wpQuery中按发布日期和修改日期发布的排序

我使用标准的wp\\u查询加载帖子。我的要求是按发布日期和修改日期显示发布订单。也就是说,如果我添加了同样应该显示在顶部的新帖子,如果我修改了同样应该显示在顶部的任何帖子。这是怎么回事? $the_query = new WP_Query( array( \'post_type\' => $post_type, \'orderby\' => \'modified\', \'order\' => \'DESC\'