您不能在这样的查询中运行任意PHP函数。WP_Query
(其中get_posts()
uses)不会检索帖子,然后用PHP对其进行过滤,它会转换为一个SQL查询,以查找结果。
正确的订购方式meta_value
在SQL中,按日期将其转换为DATETIME
. 这条路WP_Query
允许您通过meta_type
论点从…起the documentation:
您还可以指定‘meta_type‘
如果要将元值强制转换为特定类型。可能的值为“NUMERIC”、“BINARY”、“CHAR”、“DATE”、“DATETIME”、“DECIMAL”、“SIGNED”、“TIME”、“UNSIGNED”,与中相同‘$meta_query‘
.
在您的情况下,您可以这样使用它:
$args = array(
\'post_type\' => \'my_post_type\',
\'meta_key\' => \'date\',
\'meta_type\' => \'DATETIME\',
\'orderby\' => \'meta_value\'
\'order\' => \'ASC\',
);
请注意,我没有对此进行测试,因为我没有合适的数据进行测试。