在 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;
}
我正在尝试使用 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;
}