在post meta中,不能按序列化数组中的值排序。存储这样的数组时:
$value = [
[
\'plan_name\' => \'name 1\',
\'plan_price\' => \'1\',
\'theType\' => \'yesPaid\',
\'plan_space\' => \'Unlimited\',
],
[
\'plan_name\' => \'name 2\',
\'plan_price\' => \'3\',
\'theType\' => \'yesFree\',
\'plan_space\' => \'5000\',
],
[
\'plan_name\' => \'name2\',
\'plan_price\' => \'5\',
\'theType\' => \'yesPaid\',
\'plan_space\' => \'Unlimited\',
],
]
这存储在PHP中,如下所示:
a:3:{i:0;a:4:{s:9:"plan_name";s:6:"name 1";s:10:"plan_price";s:1:"1";s:7:"theType";s:7:"yesPaid";s:10:"plan_space";s:9:"Unlimited";}i:1;a:4:{s:9:"plan_name";s:6:"name 2";s:10:"plan_price";s:1:"3";s:7:"theType";s:7:"yesFree";s:10:"plan_space";s:4:"5000";}i:2;a:4:{s:9:"plan_name";s:5:"name2";s:10:"plan_price";s:1:"5";s:7:"theType";s:7:"yesPaid";s:10:"plan_space";s:9:"Unlimited";}}
至于MySQL—负责查询帖子—这只是一个很长的字符串。从以开头的单词或句子中无法区分
a
. 只有在使用
get_post_meta()
.
因此,不可能按数组中的属性排序,如果尝试按此meta的meta值排序,那么它只会按字符串排序。
如果需要以这种方式排序,则需要找到另一种存储数据的方法。我对您的项目没有足够的了解,无法提出任何具体的建议,但您可能需要为这些计划创建一个自定义数据库表,然后需要使用posts_join
和posts_orderby
钩子直接修改查询SQL。