Auto Taxonomy Assignment

I use this code snippet to automatically assign posts to a taxonomy based on the first letter of the post. See this video for more details.

//------------------------------------------------------------------------------
//This function auto adds the glossary entry to the appropriate category
function auto_assign_glossary_section($post_id, $post, $update) {
    // Only proceed for published glossary posts
    if (get_post_status($post_id) !== 'publish' || get_post_type($post_id) !== 'glossary') {
        return;
    }

    // Check if the taxonomy exists
    if (!taxonomy_exists('glossary-sections')) {
        return;
    }

    // Get the post title
    $post_title = get_the_title($post_id);
    
    // Get the first non-whitespace character
    $first_char = trim($post_title)[0] ?? '';

    // Determine the term name
    $term_name = ctype_alpha($first_char) ? strtoupper($first_char) : '#';

    // Try to get the term
    $term = get_term_by('name', $term_name, 'glossary-sections');

    if ($term) {
        // If the term exists, assign it to the post
        wp_set_object_terms($post_id, $term->term_id, 'glossary-sections');
    } else {
        // If the term doesn't exist, create it and assign it
        $new_term = wp_insert_term($term_name, 'glossary-sections');
        if (!is_wp_error($new_term)) {
            wp_set_object_terms($post_id, $new_term['term_id'], 'glossary-sections');
        }
    }
}
add_action('wp_insert_post', 'auto_assign_glossary_section', 10, 3);
Review Your Cart
0
Add Coupon Code
Subtotal