WordPress: añadir taxonomías a los tipos de posts

Logo de WordPress

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:

WordPress añadiendo taxonomías a los posts..

Para más información me remito a la documentación oficial:
https://codex.wordpress.org/Function_Reference/register_taxonomy#Arguments

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *