register_rest_route('nv','get_registered_nav_menus',{
methods: 'post',
callback(data,req) {
return get_registered_nav_menus();
},
permission_callback: power=>power >= 10,
});
register_rest_route('nv','get_nav_menu',{
methods: 'post',
callback(data,req) {
// name: String, names:[String]
// 无参数的情况直接返回所有
var {name,names,raw} = data;
return raw ? nv_get_raw_nav_menu(name || names) : nv_get_nav_menu(name || names);
},
});
register_rest_route('nv','save_nav_menu',{
methods: 'post',
callback(data,req) {
var {name,data} = data;
return nv_save_nav_menu(name,data);
},
permission_callback: power=>power >= 10,
});
register_rest_route('nv','get_nav_menu_metas',{
methods: 'post',
callback(data,req) {
// 获取菜单界面需要的post_type、taxonomies、posts、terms
var registered_post_types = apply_filters("_nv_posttypes",[]);
var post_types = registered_post_types
.filter(post_type=> (post_type.opts || {}).show_ui )
.map(post_type=>({
post_type: post_type.post_type,
name: (post_type.opts || {}).label || post_type.post_type
}))
var post_type_slugs = post_types.map(r=>r.post_type);
var registered_taxonomies = apply_filters('_nv_taxonomies',[]);
var taxonomies = registered_taxonomies
.filter(taxonomy=>post_type_slugs.includes(taxonomy.post_type))
.map(taxonomy=>({
taxonomy: taxonomy.taxonomy,
name: ((taxonomy.opts || {}).labels || {}).name || taxonomy.taxonomy,
}))
var taxonomy_slugs = taxonomies.map(r=>r.taxonomy);
// var posts = nvdb.posts.find(r=>post_type_slugs.includes(r.post_type),['id','title','post_type','slug'])
// var terms = nvdb.terms.find(r=>taxonomy_slugs.includes(r.taxonomy),['id','name','slug','taxonomy'])
var posts = query_posts({
post_type: post_type_slugs,
status: '',
date_query: {},
posts_per_page: 99999,
})
.data.map(({id,title,post_type})=>({
id,title,post_type
}))
var terms = query_terms({
taxonomy: taxonomy_slugs,
terms_per_page: 99999,
})
.data.map(({id,name,taxonomy})=>({
id,name,taxonomy
}))
return { post_types,taxonomies,posts,terms }
},
permission_callback: power=>power >= 10,
});