根据ID数组创建自定义订单排序方式

时间:2016-08-19 作者:Jeff

我正在根据drag-drop post的id数组排序自定义订单。。我设法从保存的设置中获取id。。

例如,我有

Array (
    [0] => 8701
    [1] => 11301
    [2] => 8999
    [3] => 9000
    [4] => 9137
    [5] => 9023
    [6] => 9043
    [7] => 9020
    [8] => 9081
    [9] => 9109
    [10] => 8984
    [11] => 8967
) 
但wordpress一直按id排序。。我想按相同的顺序查询它。

1 个回复
最合适的回答,由SO网友:birgire 整理而成

看起来你想订购post__in:

$samp = array ( 
    \'post_type\'      => \'product\', 
    \'posts_per_page\' => 12, 
    \'post__in\'       => $init_ids_arr, 
    \'orderby\'        => \'post__in\',        // <-- Try this to fix the order
); 
我们可能还想跳过粘性贴子:

\'ignore_sticky_posts\' => true,
如果我们想显示所有用户选择的帖子,那么我们可以使用:

$samp = array ( 
    \'post_type\'           => \'product\', 
    \'post__in\'            => $init_ids_arr, 
    \'nopaging\'            => true,              // <-- No paging 
    \'ignore_sticky_posts\' => true,              // <-- Avoid injected sticky posts 
    \'orderby\'             => \'post__in\',        // <-- Keep user defined order
); 
我们添加了nopaging 属性以删除SQL_CALC_FOUND_ROWSLIMIT 生成的SQL查询的一部分。

在运行查询之前,我们应该记住验证用户输入。比如确保$init_ids_arr 不是空数组,否则我们将得到查询的默认WHERE部分。我们还想确保它只是整数,我们不想查询大量的帖子。

相关推荐

如何在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