Динамически создавать / удалять термины в таксономии, когда публикуется / сортируется пользовательский тип публикации

Я немного борюсь с созданием и удалением терминов, основанных на том, что пользовательский тип сообщения публикуется и сбрасывается. В идеале я хотел бы создать новый термин в моей пользовательской таксономии, когда публикуется пользовательский тип публикации. Затем, когда сообщение в типе персонализированного сообщения разбивается, мне нужно проверить и убедиться, что счетчик на этом члене равен 0, и если это так автоматически удалить соответствующий термин. Вот что я до сих пор. Функция создания работает правильно, но я не могу понять функцию trashed. Ваш опыт очень ценится !!

<?php /** * Automatically creates terms in 'custom_taxonomy' when a new post is added to its 'custom_post_type' */ function add_cpt_term($post_ID) { $post = get_post($post_ID); if (!term_exists($post->post_name, 'custom_taxonomy')) wp_insert_term($post->post_title, 'custom_taxonomy', array('slug' => $post->post_name)); } add_action('publish_{custom_post_type}', 'add_cpt_term'); ?> 

… и теперь для функции, с которой мне трудно работать, так я хочу:

 /** * Automatically removes term in 'custom_taxonomy' when the post of 'custom_post_type' is trashed */ function remove_cpt_term($post_ID) { $post = get_post($post_ID); $term = get_term_by('name', $post->post_name, 'custom_taxonomy', 'ARRAY_A'); if ($post->post_type == 'custom_post_type' && $term['count'] == 0) wp_delete_term($term['term_id'], 'custom_taxonomy'); } add_action('wp_trash_post', 'remove_cpt_term'); ?> 

Solutions Collecting From Web of "Динамически создавать / удалять термины в таксономии, когда публикуется / сортируется пользовательский тип публикации"

Хорошо, я думаю, что я нашел жизнеспособное решение. Kinda разочарован тем, что до сих пор я не нашел возможности напрямую подключиться к trash_{custom_post_type} как я смог на publish_{custom_post_type} . Вот решение для всех, кто борется с этой проблемой. Если у кого-то есть лучшие предложения, пожалуйста, не стесняйтесь делиться!

 /** * Automatically removes term in 'custom_taxonomy' when the post of 'custom_post_type' is trashed */ function remove_cpt_term($post_ID) { $post = get_post($post_ID); $term = get_term_by('slug', $post->post_name, 'custom_taxonomy'); // target only our custom post type && if no posts are assigned to the term if ('custom_post_type' == $post->post_type && $term->count == 0) wp_delete_term($term->term_id, 'custom_taxonomy'); } add_action('wp_trash_post', 'remove_cpt_term');