用于比较两个日期的元查询

时间:2014-08-21 作者:John

我想列出在$start\\u日期和$end\\u日期之间注册的所有用户。我编写了一个元查询,但它返回空。请帮忙。

$start_date        =  2014-08-16 09:28:17
$end_date          =  2015-08-16 09:28:17
$current_user_id   =  get_current_user_id();
$args = array(
\'meta_query\' => array(
    \'relation\' => \'AND\',
        array(
            \'key\' => \'user_registered\',
            \'value\' => $start_date,
            \'compare\' => \'>\',
            \'type\' => \'NUMERIC\'
        ),
        array(
            \'key\' => \'user_registered\',
            \'value\' => $end_date,
            \'compare\' => \'<=\',
            \'type\' => \'NUMERIC\'
        ),
        array(
            \'key\'  => \'referral_id\',
            \'value\' => \'current_user_id\',
            \'compare\'=> \'=\',
            \'type\' => \'NUMERIC\'
        )
    ),

);
$users = get_users($args);

2 个回复
SO网友:Chinmoy Kumar Paul

EDIT

开始和结束日期遵循日期格式。但您在元查询中使用的是数字类型转换。您需要使用日期类型,如

array(
            \'key\' => \'user_registered\',
            \'value\' => $start_date,
            \'compare\' => \'>\',
            \'type\' => \'DATE\'
        ),
        array(
            \'key\' => \'user_registered\',
            \'value\' => $end_date,
            \'compare\' => \'<=\',
            \'type\' => \'DATE\'
        )
希望这对你有帮助。

啊。。。还有一个问题。您正在将数据保存在$current_user_id 但您没有在第三个数组中使用此变量。试试这个

array(
            \'key\'  => \'referral_id\',
            \'value\' => $current_user_id,
            \'compare\'=> \'=\',
            \'type\' => \'NUMERIC\'
        )
完整代码:

$args = array(
   \'meta_query\' => array(
                         array(
                                \'relation\' => \'AND\',
                                array(
                                    \'key\' => \'user_registered\',
                                    \'value\' => $start_date,
                                    \'compare\' => \'>\',
                                    \'type\' => \'DATE\'
                                ),
                                array(
                                    \'key\' => \'user_registered\',
                                    \'value\' => $end_date,
                                    \'compare\' => \'<=\',
                                    \'type\' => \'DATE\'
                                ),
                                array(
                                    \'key\'  => \'referral_id\',
                                    \'value\' => $current_user_id,
                                    \'compare\'=> \'=\',
                                    \'type\' => \'NUMERIC\'
                                )
                        )
                  )
);
$users = get_users($args);
请立即尝试我的完整代码。

SO网友:Elly Post

正确的方法是现在使用WP_Date_Query. 请参见date_query 字段输入get_users() 描述如下:

通过WP\\u Date\\u查询对象处理的数组。允许对user\\u registered字段进行日期查询。

您可以生成date_query 此处为数组:https://generatewp.com/wp_date_query/

示例

$date_query = array(
    \'relation\' => \'AND\',
    array(
        \'before\'        => \'2019-05-31\',
        \'after\'         => \'2019-01-01\',
        \'inclusive\'     => true,
    ),
);
$users = get_users([
   \'date_query\' => $date_query
]);

结束

相关推荐

How can I find plugins' slug?

我想知道如何才能找到插件的slug(slug=WordPress用来更新插件和确定哪些插件当前处于活动状态的内部名称)?它通常是插件的文件夹名,但如果插件没有文件夹,则是其文件名(如hello.php)。是否有其他例外情况?大小写字符重要吗</插件的slug是否可以与其文件夹名不同?如果有一个叫做hello的插件呢。php和另一个/您好。php/您好。php