Example
<?php
class Open_Taxonomy_Type extends Papi_Taxonomy_Type {
  /**
   * The type meta options.
   *
   * @return array
   */
  public function meta() {
    return [
      'name'                  => 'Open',
      'taxonomy'              => 'category',
      'redirect_after_create' => true
    ];
  }
  /**
   * Register content meta box.
   */
  public function register() {
    $this->box( 'Content', [
      papi_property( [
        'title' => 'Name',
        'slug'  => 'name',
        'type'  => 'string'
      ] ),
      papi_property( [
        'title' => 'Post',
        'slug'  => 'post',
        'type'  => 'post'
      ] ),
      papi_property( [
        'title' => 'Text',
        'slug'  => 'Text',
        'type'  => 'text'
      ] )
    ] );
  }
}
Taxonomy type exists since 3.1.0
Meta method
The meta is a required method of the taxonomy type class. It should return an array containing the required keys.
| Options | Required | Description | 
|---|---|---|
| name | yes | The name of the taxonomy type | 
| description | no | The description of the taxonomy type | 
| fill_labels | no | When this is true it will add the taxonomy type name to add_new_item,edit_itemandview_itemlabel. Both in WordPress admin and the admin bar on the front. You can override this with thelabelsarray. | 
| labels | no | With this you can handle the labelsobject that exists on a taxonomy. So this means that you can change “Edit Category” for every taxonomy type and have something likeEdit Open taxonomy. Just create a array with thelabelskeys and values on your taxonomy type meta array | 
| taxonomy | yes | Array of taxonomies that the taxonomy type should be registered on. Default is empty string | 
| redirect_after_create | no | Redirect after term is created where all Papi fields will be. Default is false | 
| show_screen_options | no | Show screen options tabs. Default is true | 
| show_help_tabs | no | Show help tabs. Default is true | 
| sort_order | no | The sort order number of the taxonomy type | 
| template | no | The template file to render. This can be both dot templates taxonomies.openortaxonomies/open.php, extension is not required. | 
Body classes method
<?php
/**
 * Example of `body_classes` method.
 *
 * @return array
 */
public function body_classes() {
  return ['custom-class'];
}
With this method you can add custom body classes to body when a taxonomy type is rendered in the WordPress admin.
Box method
This method is used to register all properties, tabs and remove meta boxes as described above.
The box method can has callable method as the second argument that returns a array with properties or tabs.
Read more about that under box section.
Display method
<?php
/**
 * Example of `display` method.
 *
 * @param  string $taxonomy
 *
 * @return bool
 */
public function display( $taxonomy ) {
  return $taxonomy === 'category';
}
This method is used to tell if the taxonomy type should be displayed (listed in the dropdown) or not.
The method will take a $taxonomy argument. This is useful when the taxonomy type is registered on more than one taxonomy.
Returning anything other than true will hide the taxonomy type.
Default value is true
Help method
<?php
/**
 * Example of `help` method.
 *
 * @return array
 */
public function help() {
  return [
    'Custom title' => 'Custom help text'
  ];
}
Add custom help tabs, array of key/value where the key is the title and the value is the content
Help sidebar method
<?php
/**
 * Example of `help_sidebar` method.
 *
 * @return string
 */
public function help_sidebar() {
  return '<p>Hello, world</p>';
}
Add custom html to help sidebar
Namespaces
<?php
namespace Foo\Bar;
/**
 * Example of a taxonomy type with namespace.
 */
class Test_Taxonomy_Type extends \Papi_Taxonomy_Type {}
Papi has no problem to work with taxonomy types that have namespaces.