读取数组中与META_QUERY相关的内容

时间:2019-02-14 作者:user3692010

我正在捕获一个用户的工作周年纪念,他们的内容存储在一个数组中。因此,与这些元字段相关的关键是hire_date 存储在该数组中的值如下所示a:2:{s:3:"day";s:1:"8";s:5:"month";s:5:"March";}

我真正不明白的是\'orderby\' => \'meta_value\', 实际上是按排序,因为键有多个值。

现在如果有以下代码,我想知道ASC订单与$current\\u day相关,但我不相信是这样。我试过使用\'type\' => \'NUMERIC\' 以及\'orderby\' => \'meta_value_num\' 但坦率地说,我只是不知道如何处理这个问题,以便在本月按升序显示这些工作周年纪念日。

感谢您帮助解决此问题!

$current_month = date(\'F\');
$current_day = date(\'d\');
$args_anniversary_current = array(
\'role__in\' => array(\'subscriber\', \'subscriberlimited\'),
\'order\' => \'ASC\',
\'orderby\' => \'meta_value\',

\'meta_query\' => array(

        array(
            \'relation\'  => \'AND\',

            array(
                \'key\'       => \'hire_date\',
                \'value\'     => $current_month,
                \'compare\'   => \'LIKE\',
            ),
            array(
                \'key\'       => \'hire_date\',
                \'value\'     => $current_day,
                \'compare\'   => \'>=\',
            ),
        ),
    ),
);

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

我真正不理解的是“orderby”=>“meta\\u value”实际上是如何排序的,因为键有多个值。

它没有多个值。它只有一个值:

a:2:{s:3:"day";s:1:"8";s:5:"month";s:5:"March";}`
这是一个\'serialised array\'. 这只是一种将数组存储为字符串的方法。就WordPress(和MySQL)而言,这只是一个以字母开头的字符串a, 它将被相应地排序。

事实上,如果需要按序列化数组进行查询或排序,则序列化数组是非常糟糕的数据存储方式。

您还存储了月份名称,这意味着您无法按月份轻松排序,因为月份名称不是按字母顺序排列的。

如果要按月份和日期进行排序和查询,请使用WP_QueryWP_User_Query, 您最好将雇用日期存储为两个字段:hire_monthhire_day, 并将这两个值存储为数字。如果你这样做了,你可以像这样做(我猜你是想显示本月有周年纪念日的用户):

$current_month = date( \'n\' ); // 1-12
$current_day   = date( \'j\' ); // 1-31

$args_anniversary_current = [
    \'role__in\'   => [ \'subscriber\', \'subscriberlimited\' ],
    \'order\'      => \'ASC\',
    \'orderby\'    => \'hire_day\',
    \'meta_query\' => [
        [
            \'relation\'  => \'AND\',
            \'hire_month\' => [
                \'key\'     => \'hire_month\',
                \'value\'   => $current_month,
                \'compare\' => \'=\',
            ],
            \'hire_day\' => [
                \'key\'     => \'hire_day\',
                \'value\'   => $current_day,
                \'compare\' => \'>=\',
            ],
        ],
    ],
]

相关推荐

网站警告:CALL_USER_FUNC_ARRAY()要求参数1是有效的回调,类‘WPPR_Public’没有方法‘amp_Support’

警告:call_user_func_array() 要求参数1为有效回调,类“Wppr\\u Public”在/home1/thrfolde/Public\\u html/3foldtraining/wp includes/class wp hook中没有方法“amp\\u support”。php在线288如何解决此错误?https://3foldtraining.com/ - 在顶部标题上(如果双击黑条,可以看到该错误) // Avoid the array_slice if p