在 Wordpress REST API 中按菜单顺序排序?

Ordering By Menu Order in the Wordpress REST API?

我正在尝试使用 REST API 来显示 post,并且我想根据它们在管理菜单中的位置以菜单顺序显示它们。

我安装了一个插件,允许我将 posts 移动到管理员中的任何位置。我知道用 wordpress 以正常方式查询 posts 有一个 orderby: menu_order 选项,它可以满足我的要求,但我无法用 REST API.

我的 REST API 看起来像这样:

https://example.com/wp-json/wp/v2/qd_leadership?_embed&per_page=100&orderby=menu_order

所以我试过了,但没有用。它说 menu_order 不是一个选项。我在这里也看到了一个post:

Query WordPress (REST) posts by the order they appear on the admin

那个也有类似的问题。 post 的唯一答案是没有任何 orderby 参数,应该按菜单顺序显示它们,但这对我不起作用。所以我很困惑如何按菜单顺序从 REST API 中订购 posts?

它的 bug 的 wp 核心在休息 api 所以你可以使用下面的 hack solution.Please 在你的活动主题的 function.php[=13= 添加下面的代码]

add_filter( 'rest_post_collection_params', 'my_prefix_add_rest_orderby_params', 10, 1 );

function my_prefix_add_rest_orderby_params( $params ) {
    $params['orderby']['enum'][] = 'menu_order';

    return $params;
}

已测试并有效。

感谢 raju_eww 在正确方向上的提示。但在自定义 post 类型集合的情况下,过滤器挂钩名称必须如下所示:

add_filter( 'rest_custom-post-type_collection_params', 'my_prefix_add_rest_orderby_params', 10, 1 );
function my_prefix_add_rest_orderby_params( $params ) {
    $params['orderby']['enum'][] = 'menu_order';

    return $params;
}

在此处找到: https://www.timrosswebdevelopment.com/wordpress-rest-api-post-order/

orderby 不在查询字符串中时(对于 woocommerce),以下代码按 menu_order 排序:

add_filter('woocommerce_get_catalog_ordering_args', 'am_woocommerce_catalog_orderby');
function am_woocommerce_catalog_orderby( $args ) {
    if(!$_GET['orderby']) {
    $args['orderby'] = 'menu_order';
    $args['order'] = 'asc';
    }
    return $args;
    }

source