星期三 , 22 1 月 2025

注册自定义分类类型register custom taxonomy


/**
@ https://developer.wordpress.org/reference/functions/get_taxonomy_labels/
@ https://developer.wordpress.org/reference/functions/register_taxonomy/
#######  non-hierarchical taxonomies (like tags) and the second one is for hierarchical taxonomies (like categories).
*/
add_action('init','register_custom_taxonomies');

function register_custom_taxonomies() {

	$args == array(
		'labels'  => array(   // 分类类型的标签 By default, Tag labels are used for non-hierarchical taxonomies, and Category labels are used for hierarchical taxonomies.
			'name'  => 'linktypes',  //统一默认名称, 通常是复数, 等同于 $tax->label 。默认是Tags'/'Categories。 
			'singular_name'  => 'linktype', //单数名称
			'search_items'  => 'Search LinkTypes',  //Default 'Search Tags'/'Search Categories'.
			'popular_items'  => 'Popular Tags',  //只用在non-hierarchical 分类上。 
			'all_items'  => 'All linktypes', //(string) Default 'All Tags'/'All Categories'.
			'parent_item'  => 'Parent linktype', // 只对hierarchical分类有用,如category
			'parent_item_colon'  => __( 'Parent Category:' ), //同上 只是多了一个 colon 多了一个冒号:
			'edit_item'  => 'Edit LinkType',  //编辑单个分类 
			'view_item'  => 'View LinkType',
			'update_item'  => 'Update LinkType',
			'add_new_item'  => 'Add New LinkType',
			'new_item_name'  => 'New LinkType Name',
			'separate_items_with_commas'  => 'Seprate Linktypes with commas',  //只对non hierachical 如 tag有用。
			'add_or_remove_items'  => 'Add or remove Linktypes', // non h 分类如tag有用
			'choose_from_most_used'  => 'Choose from the most used linktype',   //non h 分类 如tag 有用
			'not_found' => 'No linktype found',  // (string) Default 'No tags found'/'No categories found', used in the meta box and taxonomy list table.
			'no_terms'  => 'No linktypes',   // 在posts和media list tables里面使用
			'items_list_navigation'  => '',  //(string) Label for the table pagination hidden heading.
			'items_list'  => '',  //(string) Label for the table hidden heading.
			'most_used'  => '',  //(string) Title for the Most Used tab. Default 'Most Used'.
			'back_to_items'  => '',   // Linktypes 。 term更新之后展示的标签。 

		),

		'description'  => 'Linktype taxonomy',
		'public'  => true,  // 等同于 post type 的public,  值传递给 $publicly_queryable, $show_ui, and $show_in_nav_menus
		'publicly_queryable'  => true, //从public继承, 是否设置分类公开可查询。 
		'hierarchical'  => false, //是否设置有分级,如category一样有子分类。 默认是 否。 
		'show_ui'  => true,  // 是否在管理页面展现可 用来管理,默认是$public值
		'show_in_menu'  => true,  //是否在管理页面左侧菜单展示,选择在管理左侧文章分类子菜单上显示。 要起作用, $show_ui要设置为true, 依附于show ui. 默认值是$show_ui的值。
		'show_in_nav_menus'  => true,  //设置文章类型可以在菜单选择页面那里可以被设置为菜单。  默认值为public的值。
		'show_in_rest'  => true, //是否把分类包含到rest api, 设置为true的话就可启用古腾堡板块编辑器。 设置true可以通过rest url查询并调用。
		'rest_base'  => $taxonomy,  //更改rest api 路由的基础url。 默认是的 $taxonomy,
		'rest_controller_class'  =>  'WP_REST_Terms_Controller',  //(string) REST API Controller class name
		'show_tagcloud'  => true,   //是否在tag cloud 小工具中添加这个分类、。 如果没有设置,。默认值继承自show_ui 
		'show_in_quick_edit'  => true,   //是否显示分类在快递和批量编辑面板,  默认值继承自show_ui
		'show_admin_column'  => false, //是否在绑定的post type 列表上添加一个分类的列。 默认是false. 
		'meta_box_cb'  => post_categories_meta_box(),  //回调函数,没有设置的话默认是 post_categories_meta_box() is used for hierarchical taxonomies, and post_tags_meta_box() is used for non-hierarchical.如果设置false,则没有 meta_box会展示、
		'meta_box_sanitize_cb'  => '', //分类数据从meta_box保存时候的过滤回调函数。 如果没有定义,默认就会根据数据类型来调用自带
		'capabilities'  => array('manage_terms','edit_terms','delete_terms','assign_terms'),  //默认就是四个都有, 设置编辑权限
		'rewrite'  => array('slug'  => 'Links'),  //重写,默认是true, 用$taxonomy 当作slug. To prevent rewrite, set to false.重写时通过数组:
		/* 'slug'
(string) Customize the permastruct slug. Default $taxonomy key.
'with_front'
(bool) Should the permastruct be prepended with WP_Rewrite::$front. Default true.
'hierarchical'
(bool) Either hierarchical rewrite tag or not. Default false.
'ep_mask'
(int) Assign an endpoint mask. Default EP_NONE. */

	'query_var'  => $taxonomy,  // Default $taxonomy key. If false, a taxonomy cannot be loaded at ?{query_var}={term_slug}. If a string, the query ?{query_var}={term_slug} will be valid.
	'update_count_callback'  =>   //(callable) Works much like a hook, in that it will be called when the count is updated. Default _update_post_term_count() for taxonomies attached to post types, which confirms that the objects are published before counting them. Default _update_generic_term_count() for taxonomies attached to other object types, such as users.
	'default_term'  => array()  //'name'
// (string) Name of default term.
// 'slug'
// (string) Slug for default term.
// 'description'
// (string) Description for default term.
	'_builtin'  => 




	);
	register_taxonomy('link-type','weblinks',$args);
}