Problem:
The user wants to create a taxonomy called "Artists" for a CPT "Record" with the following restrictions:
Limit the taxonomy to a single selection.
Ensure the taxonomy is "childless," meaning no parent-child hierarchy is allowed.
Solution:
Limiting the Taxonomy to a Single Selection:
Toolset does not natively allow restricting taxonomies to a single choice. However, you can achieve this using custom JavaScript and CSS to ensure only one checkbox can be selected in the admin panel.
function restrict_taxonomy_to_single_selection() {
if (is_admin()) {
?>
<style type="text/css">
#newartist_parent {
display: none; /* Hide parent selectors */
}
</style>
<script type="text/javascript">
jQuery(document).ready(function($) {
$('input[name="tax_input[artist][]"]').on('change', function() {
if ($(this).is(':checked')) {
$('input[name="tax_input[artist][]"]').not(this).prop('checked', false);
}
});
});
</script>
<?php
}
}
add_action('admin_footer', 'restrict_taxonomy_to_single_selection');
Creating a "Childless" Taxonomy:
In Toolset > Taxonomies, change the taxonomy type to a flat taxonomy (like tags) instead of hierarchical. This will prevent parent-child relationships in the taxonomy.
Alternative Using Toolset Relationships:
For a more robust solution, consider creating a custom post type "Artist" and use a one-to-many relationship with the "Record" post type. This ensures each record has only one artist and avoids hierarchy issues.
Relevant Documentation:
https://toolset.com/lesson-placement/lesson-placements-1824625-1727273/
https://toolset.com/lesson-placement/lesson-placements-1824625-1727251/