具有ORDER BY另一个定制字段的元查询

时间:2020-03-30 作者:jakesh_of_redesigned

编辑:我会尽量详细解释我的问题。我在一个投资组合网站上工作。有几种自定义的帖子类型:项目、出版物、展览、讲座和幻灯片。主页由以下部分组成:

带幻灯片的滑块portfolio consisting of:<选定(由客户标记)的项目、出版物、展览和讲座以及剩余的项目、出版物、展览和讲座Now, I have problem with the portfolio section. 为了使用Desandro的无限滚动,需要对其进行分页-单击“加载更多”按钮后加载下一篇文章。前10篇文章由客户按照第二个自定义字段(从1到10)确定的特定顺序标记为“选定”(第一个自定义字段)。其余职位将按日期降序排列。

我使用wp\\u query查询自定义帖子,使用meta\\u query将这些“选定”帖子放在顶部,并按升序排序。我试图按日期对剩余的帖子进行排序,但我被卡住了。

查看我的wp\\U查询参数:

\'post_type\' => array( \'projekty\', \'publikacje\', \'wystawy\', \'wyklady\' ),
\'post_status\' => array( \'publish\' ),
\'meta_query\' => array(
    \'relation\' => \'OR\',
    \'home_rest\' => array(
        \'key\' => \'sticky_home\',
        \'compare\' => \'NOT EXISTS\'
        ),
    \'home_sticky\' => array(
        \'key\' => \'sticky_home\',
        \'compare\' => \'EXISTS\'
        ),
\'orderby\' => array(
    \'home_rest\' => \'DESC\',
    \'home_sticky\' => \'ASC\',
    ),
\'posts_per_page\' => 10, 
\'paged\' => get_query_var(\'paged\'), 
因此,我实现了第一个目标(你可以在这里看到代表“选定”帖子的红色方块:http://redesigned.pl/_sts/bxbstudio/strona-glowna-infinitemasonry/.

我想我可以做多次orderby 排序。首先,排序方式sticky_home 字段(真/假字段)以获取顶部的选定帖子;其次,按升序排序sticky_home_order 领域第三,用sticky_home 标记false 按发布日期递减。您认为可以在一个查询中获得所有这些信息吗?或者也许有另一种方法可以做到这一点?

我会感激你的帮助。

编辑:我不是一个有经验的PHP程序员。阅读了stack exchange上的各种内容后,我认为usort 可能是这样吗?连同get_posts? 但另一方面,分页将停止。。

1 个回复
SO网友:jakesh_of_redesigned

在摆弄和搜索了一下之后,我终于有了:

“选定”顶部的10个帖子,下面的“剩余”帖子按日期降序排列,不幸的是,“选定”帖子按降序排列。。。以下是我的疑问:

$args = array(
    \'post_type\' => array( \'projekty\', \'publikacje\', \'wystawy\', \'wyklady\' ),
    \'post_status\' => array( \'publish\' ),
    \'meta_query\' => array(
        \'relation\' => \'OR\',
        array(
            \'key\' => \'sticky_home_order\',
            \'type\' => \'numeric\',
            \'compare\' => \'NOT EXISTS\'
        ),
        array(
            \'key\' => \'sticky_home_order\',
            \'type\' => \'numeric\',
            \'compare\' => \'EXISTS\'
        ),
    ),
    \'orderby\' => array(
        \'meta_value\' => \'DESC\',
        \'meta_value_num\' => \'ASC\', 
        \'date\' => \'DESC\'
    ),
    \'posts_per_page\' => 20, 
    \'paged\' => get_query_var(\'paged\')
);

相关推荐

WooCommerce:如何使用WooCommerce_Order_Item_Meta_end在电子邮件确认中显示项目元数据

我们的商店销售软件,我们正在为每个购买的软件添加一个软件凭证代码。购买完成后(通过woocommerce_payment_complete hook)我们生成凭证代码并将其添加到通过wc_add_order_item_meta 方法汇总代码:add_filter(\'woocommerce_payment_complete\', \'add_voucher_code\'); function add_voucher_code( $order_id ) { $or