高级WP_QUERY WITH META_QUERY,ORDERBY?

时间:2016-02-04 作者:user4630

我想知道是否有人可以帮助我使用ACF进行这个复杂的小查询。

到目前为止,我有以下应该显示的内容:

第页,

新闻文章,

关于文章和

相关文章。

仅显示4个。

仅在以下情况下显示:选择ACF/Meta键“主页”为“是”

按ACF/元键“home\\u Order”的数值排序,即1,2,3 first、second、third等

      $args = array(

                \'post_type\' => array( \'page\', \'news-articles\', \'about-articles’,\'involved-articles\' ),
                \'showposts\' => 4,
                \'meta_query\' => array(
                         \'relation\' => \'AND\',
                             array(
                                                 \'key\' => \'home_page\',
                                                 \'value\' => \'yes\',
                                                 \'compare\' => \'IN\',
                             ),
                                         array(

                                                 \'orderby\'   => \'meta_value_num\',
                                                 \'meta_key\'  => \'home_order’,

                            ),
                 ),

            );
我认为“比较”和“关系”有问题

2 个回复
SO网友:Pieter Goosen

你真的应该读一下documentation on meta_query\'s

以下是meta_query

键(字符串)-自定义字段键。

值(字符串|数组)-自定义字段值。仅当比较为\'IN\', \'NOT IN\', \'BETWEEN\', 或\'NOT BETWEEN\'. 使用时不必指定值\'EXISTS\'\'NOT EXISTS\' WordPress 3.9及以上版本中的比较。

(注意:由于bug#23268,需要值NOT EXISTS 3.9之前的比较工作正常。必须为value参数提供一些字符串。空字符串或NULL 不起作用。但是,任何其他字符串都可以做到这一点,并且在使用时不会显示在SQL中NOT EXISTS. 需要灵感吗?“bug#23268”怎么样

比较(字符串)-要测试的运算符。可能的值为\'=\', \'!=\', \'>\', \'>=\', \'<\', \'<=\', \'LIKE\', \'NOT LIKE\', \'IN\', \'NOT IN\', \'BETWEEN\', \'NOT BETWEEN\', \'EXISTS\'\'NOT EXISTS\'. 默认值为\'=\'.

类型(字符串)-自定义字段类型。可能的值为\'NUMERIC\', \'BINARY\', \'CHAR\', \'DATE\', \'DATETIME\', \'DECIMAL\', \'SIGNED\', \'TIME\', \'UNSIGNED\'. 默认值为\'CHAR\'.

您的订购需要在meta_query. 您可以尝试以下方法

$args = [
    \'post_type\'      => [\'page\', \'news-articles\', \'about-articles\', \'involved-articles\'],
    \'posts_per_page\' => 4,
    \'meta_key\'       => \'home_order\',
    \'orderby\'        => \'meta_value_num\',
    \'meta_query\'     => [
        [
            \'key\'      => \'home_page\',
            \'value\'    => \'yes\',
        ]
    ],
];
其他注意事项:

从PHP 5.4开始,您可以使用短数组语法,即[] 而不是array(). 如果您仍在运行PHP 5.6之前的任何版本,您应该认真考虑升级。

  • showposts 放弃支持posts_per_page, 所以宁可使用posts_per_page

  • SO网友:user4630
    $args = array(
                    \'posts_per_page\'    => 4,
                    \'post_type\' => array( \'page\', \'news-articles\', \'about-gorilla\',\'involved\' ),
                    \'orderby\'   => \'meta_value_num\',
                    \'meta_key\'  => \'home_order\',
                    \'order\'     => \'ASC\',
                    \'meta_query\'    => array(
                        array(
                            \'key\'       => \'home_page\',
                            \'value\'     => \'yes\',
                            \'compare\'   => \'=\',
                        ),
                    ),
                );
    

    相关推荐

    如何在WooCommerce_Account_Orders函数中传递$CURRENT_PAGE?

    woocommerce功能woocommerce_account_orders($current_page) 已调用1个参数$current_page. 该函数通过调用woocommerce_account_orders_endpoint 通过以下挂钩-add_action( \'woocommerce_account_orders_endpoint\', \'woocommerce_account_orders\' );然而,在上述挂钩中,$current_page 未在函数中作为参数传递。情况如何$c