Require a Custom Taxonomy to be checked

I have a custom taxonomy, “position”, with multiple terms for a custom post type, “employee” in the admin. I want to validate the form to require a position to be selected when you save/update a post.

How do I validate and make the position custom taxonomy a required field in the wordpress admin?

Read More

Also, I’d like to display an error message to indicate to users that a position is required to be checked.

Thanks!

Related posts

Leave a Reply

4 comments

  1. I’ve posted an answer to very similar question here which provides a “framework” to validate post fields (title,content…) meta fields (any metabox) and taxonomies (category, tags, custom) by ajax before submiting the post.

  2. following this tutorial i replaced the standard taxonomy metabox with a custom metabox that has a set of radio buttons. (the tutorial uses a select, but it isn’t that different). this way you can ensure that something is selected AND limit the selections to a few pre-defined options.

    http://shibashake.com/wordpress-theme/wordpress-custom-taxonomy-input-panels

    there is a note about how to remove the default metabox, but you can prevent the UI from ever displaying by declaring show-ui to false when you define your taxonomy.

  3. Assuming you are using a hierarchical taxonomy this worked for me, change ‘tx’ to whatever you called your taxonomy. Note, if WP change their HTML structure in the future or naming conventions this may not work.

    add_action('admin_footer', function() {
    ?>
    <script type="text/javascript">
        jQuery(document).ready(function ($) {
            //taxonomy
            var tx = 'post-type';
    
            var $scope = $('#' + tx + '-all > ul');
            $('#publish').click(function(){
                if ($scope.find('input:checked').length > 0) {
                    alert('found');
                    return true;
                } else {
                    alert('not found');
                    return false;
                }
            });
        });
    </script>
    <?php
    });