Есть ли способ заставить дочерние должности наследовать условия родительского поста?

У меня есть несколько пользовательских сообщений, которые идут от родителя к великим детям. Я назначаю родительский пост термину из пользовательской таксономии, которую я хотел бы, чтобы все дочерние записи наследовались. Есть ли способ сделать это? Или, могу ли я передать ребенку срок до родителя? В противном случае мне придется применять этот термин для каждого сообщения, что будет очень сложной задачей. Вот моя структура:

-Staff Training, Student Curriculum, Resources, Training Plans (These are terms) ---Tracks (CPT) ------Topics (CPT) ---------Courses (CPT) ------------Resources (CPT) 

Как вы можете видеть, каждый ресурс должен быть в курсе. Каждый курс должен быть в теме. Каждая тема должна быть в треке. И каждый трек имеет термин из пользовательской таксономии обучения персонала, учебной программы для учащихся, ресурсов или плана обучения. Теперь План обучения отличается тем, что он будет содержать в основном только ресурсы, которые собраны вместе и уже связаны с другим термином. Таким образом, это означает, что некоторые ресурсы будут иметь более одного срока. Тем не менее, треки, темы и курсы будут иметь только один термин.

Я предполагаю, что мне придется получить всех детей родительского CPT и применить этот термин таким образом. Или, может быть, я применяю его к Ресурсу и позволяю ему распространяться вверх через родителей?

Любая помощь, которую вы можете себе позволить, будет отличной!

Solutions Collecting From Web of "Есть ли способ заставить дочерние должности наследовать условия родительского поста?"

Я не тестировал это широко, но он работает как с публикацией, так и с обновлением. Когда публикация публикуется или обновляется, она проверяет, установлен ли родитель, захватывает родителя, чтобы получить все таксономии родителей, затем перебирает и устанавливает условия для детей в качестве таксономии терминов родителей по таксономии.

 /** Set Child Terms to Parent Terms **/ function set_parent_terms( $post_id, $post ) { if ( 'publish' === $post->post_status && $post->post_parent > 0 ) { $parent = get_post($post->post_parent); if(!empty($parent)){ $taxonomies = get_object_taxonomies( $parent->post_type ); foreach ( (array) $taxonomies as $taxonomy ) { $terms = wp_get_post_terms( $parent->ID, $taxonomy ); if ( !empty( $terms ) ) { $termArr = array_map(create_function('$obj', 'return $obj->term_id;'), $terms); $tmp = wp_set_object_terms( $post_id, $termArr, $taxonomy, true ); } } } } } add_action( 'save_post', 'set_parent_terms', 100, 2 );