WordPress循环的元键是一个数组吗?以及如何循环多个数组

时间:2019-06-21 作者:meno

如何通过保存在meta\\u键中的meta值获取帖子循环,该键是这样的数组

$sharedHosting_plans_fields = Array
                                    (
                                        [0] => Array
                                            (
                                                [plan_name] => name 1
                                                [plan_price] => 1
                                                [theType] => yesPaid
                                                [plan_space] => Unlimited
                                            )

                                        [1] => Array
                                            (
                                                [plan_name] => name 2
                                                [plan_price] => 3
                                                [theType] => yesFree
                                                [plan_space] => 5000
                                            )

                                        [2] => Array
                                            (
                                                [plan_name] => name2
                                                [plan_price] => 5
                                                [theType] => yesPaid
                                                [plan_space] => Unlimited
                                            )

                                    )
我用过这个

     \'meta_key\' => \'sharedHosting_plans_fields\',
     \'orderby\' => \'meta_value_num meta_value \',
但没有效果!!!

2-如果我想通过这样检查多个元键来获取帖子

    array(
         \'key\' => \'plan_type2\'
    ),
    array(
         \'key\' => \'plan_type3\'
    ),
    array(
         \'key\' => \'plan_type4\'
    ),
    array(
         \'key\' => \'plan_type5\'
    ),
如何通过for循环或其他任何东西来速记此代码?

我试着使用

    \'meta_key\' => array(\'sharedHosting_plans_fields\'),
     \'orderby\' => \'meta_value_num meta_value \',
而不是

    \'meta_key\' => \'sharedHosting_plans_fields\',
     \'orderby\' => \'meta_value_num meta_value \',
但运气不好

1 个回复
SO网友:Jacob Peattie

在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_joinposts_orderby 钩子直接修改查询SQL。

相关推荐

获取函数中的当前产品名称。php

在woocommerce\\u single\\u product\\u摘要之后,我在当前产品页面中创建一个按钮我想获取有关当前产品的信息(例如名称和价格),并通过按钮发送电子邮件获取信息这是我的函数代码。php文件:add_action( \'woocommerce_single_product_summary\',\'content_after_addtocart_button\' ); function content_after_addtocart_button() {