このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています

WordPressのプラグイン「intituive custom order」の並べ替えがRestAPIで効かない場合の対処法

WordPressのプラグイン「intituive custom order」はドラッグで並び順を変更できるとても便利なプラグインです。このプラグインを有効化してクエリのorderbyに「menu_order」という値を設定するだけでドラッグで直感的に変更した並び順に値を取得できます。

しかし、RestAPIでクエリを投げた場合orderby=menu_orderが利かなくなってしまうことがあります。理由はRestAPIではデフォルトでorderbyに「menu_order」を指定することはできなくなっているからです。

そういう時はfunctions.phpに以下のコードを追加するとmenu_orderを使用できるようになります。

if ( function_exist( 'my_prefix_add_rest_orderby_param' ) ):
function my_prefix_add_rest_orderby_param($params) {
    $params['orderby']['enum'][] = 'menu_order';
    return $params;
}
add_filter('rest_{post_type}_collection_params', 'my_prefix_add_rest_orderby_params', 10, 1);
endif;
// *{post_type}はカスタム投稿であればスラッグを指定する