Esto es otro codekata para WordPress, para añadir lo que se llaman taxonomías a los posts. Es decir, las taxonomías son al efecto como categorías, con las que podemos clasificar los posts. Me explico un poco más, dentro de WordPress, muchos de los contenidos son posts, están dentro de la tabla de la BD wp_posts. Se pueden dividir en tipos tal y como se puede ver en el post anterior, sobre cómo registrar tipos de posts. Y además, dentro de cada conjunto de tipos de post, éstos se pueden marcar con las taxonomías/clasificaciones.
Al grano, el código fuente
Esto se puede poner por ejemplo en el fichero de plugin siguiente:
wp-content/plugins/jnj-tools/jnj-tools.php
..y el contenido puede ser como el siguiente:
add_action('init', 'jnjtools_taxonomy', 0);
function jnjtools_taxonomy()
{
$labels = [
'name' => 'Taxonomy 1',
'singular_name' => 'Taxonomy 1',
'menu_name' => 'Taxonomy menu 1',
'all_items' => 'All taxonomies 1',
'edit_item' => 'Edit taxonomy 1',
'view_item' => 'View taxonomy 1',
'update_item' => 'Update taxonomy 1',
'add_new_item' => 'Add taxonomy 1',
'new_item_name' => 'New taxonomy name',
'parent_item' => null,
'parent_item_colon' => null,
'search_items' => 'Search taxonomies 1',
'popular_items' => 'Popular taxonomies 1',
'separate_items_with_commas' => 'Separate items with commas',
'add_or_remove_items' => 'Add or remove items',
'choose_from_most_used' => 'Choose from most used',
'not_found' => 'Not found',
'back_to_items' => 'Back to items'
];
$args= [
'label'=> 'Taxonomies 1',
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus'=> true,
//'show_in_rest' => false,
//'rest_base' => $taxonomy,
//'rest_controller_class' => 'WP_REST_Terms_Controller',
'show_tagcloud' => true,
'show_in_quick_edit' => true,
'meta_box_cb' => null,
'show_admin_column' => true,
'description' => 'Description of the taxonomy',
'hierarchical' => true,
/*'query_var' => $taxonomy,
'rewrite' => ['slug', 'with_front', 'hierarchical', 'ep_mask'],
'capabilities' => ['manage_terms', 'edit_terms', 'delete_terms', 'assign_terms'], */
'sort' => true,
'_builtin' => false,
];
register_taxonomy('taxonomy1', 'jnjtool', $args);
}
add_action('init', 'jnjtools_extra_taxonomy', 0);
function jnjtools_extra_taxonomy()
{
$labels = [
'name' => 'Taxonomy 2',
'singular_name' => 'Taxonomy 2',
'menu_name' => 'Taxonomy menu 2',
'all_items' => 'All taxonomies 2',
'edit_item' => 'Edit taxonomy 2',
'view_item' => 'View taxonomy 2',
'update_item' => 'Update taxonomy 2',
'add_new_item' => 'Add taxonomy 2',
'new_item_name' => 'New taxonomy name',
'parent_item' => null,
'parent_item_colon' => null,
'search_items' => 'Search taxonomies 2',
'popular_items' => 'Popular taxonomies 2',
'separate_items_with_commas' => 'Separate items with commas',
'add_or_remove_items' => 'Add or remove items',
'choose_from_most_used' => 'Choose from most used',
'not_found' => 'Not found',
'back_to_items' => 'Back to items'
];
register_taxonomy('taxonomy2', 'jnjtool', [
'labels' => $labels,
'hierarchical' => true,
'show_ui' => true,
'query_var' => true,
]);
}
Estas taxonomías se tienen que añadir al tipo de post jnjtool y se tiene que ver en el panel de control algo parecido a lo siguiente:
Para más información me remito a la documentación oficial:
https://codex.wordpress.org/Function_Reference/register_taxonomy#Arguments