Подключение таксономии с типом сообщения

Настройка:

  • персонализированный тип сообщения 'адвокат'
  • таможенная таксономия «специальности», которая зарегистрирована в отношении типа «адвокат»
  • пользовательский тип сообщения «область практики»

Для каждой специальности есть соответствующая область практики. Однако есть много областей практики, чем есть специальности.

В идеале, когда вы просматриваете практику (например, банкротство), я могу перечислить адвокатов, у которых есть Банкротство в качестве специальности.

Я знаю, что могу использовать плагин posts2posts и создавать связь между типом почтового сообщения и типом почтовой практики. Однако это означало бы, в основном, назначение специальности адвоката дважды (один раз в качестве таксономического термина и один раз в качестве соединения posts2posts). Есть ли способ каким-то образом установить связь между термином таксономии специальности и соответствующим типом почтовой практики? Я мог просто предположить, что имена и / или слизняки будут совпадать, но это довольно хакерское / хрупкое решение.

В идеале я хотел бы связать регулярные термины категории с различными типами сообщений типа «практика», чтобы перечислить соответствующие записи в блогах на отдельных страницах области практики (и наоборот).

Предложения?

Solutions Collecting From Web of "Подключение таксономии с типом сообщения"

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

Это означает, что для каждого типа почтового типа «практика-область» будет поле «специальный-срок-идентификатор» с термином «специальность» в качестве значения.

Здесь действие крюка для создания термина для каждого сообщения

add_action( 'save_post', 'update_related_term'); function update_related_term($post_id) { $post_type_as_taxonomy = array('practice-area'); $post = get_post( $post_id ); if(in_array($post->post_type, $post_type_as_taxonomy) && $post->post_status=='publish'){ $term_args['name'] = $post->post_title; $term_args['slug'] = $post->post_name.''; $term_id = get_post_meta($post_id, $post->post_type.'-term-id', true); if($term_id){ $term = wp_update_term( $term_id, $post->post_type.'-term', $term_args ); } else { $term = wp_insert_term( $term_args['name'], $post->post_type.'-term', $term_args ); $meta_status = add_post_meta($post_id, $post->post_type.'-term-id', $term['term_id'], true); } } } 

и действие по удалению термина для каждого сообщения удаляет

 add_action('admin_init', 'codex_init'); function codex_init() { if (current_user_can('delete_posts')){ add_action('before_delete_post', 'delete_related_term', 10); } } function delete_related_term($post_id) { $post_type_as_taxonomy = array('practice-area'); $post = get_post( $post_id ); if (in_array($post->post_type, $post_type_as_taxonomy)) { $term = get_post_meta($post_id, $post->post_type.'-term-id', true); wp_delete_term( $term, $post->post_type.'-term'); } } 

Обратите внимание, что я использовал «область практики» в качестве настраиваемого типа сообщений и «практика-область-срок» в качестве соответствующей таксономии.

Надеюсь, что эта помощь

если я правильно вас пойму, тогда, когда вы окажетесь на «практике-области банкротства» … «Банкротство» будет термином, который вы хотите запросить в таксономии «специальности».

вы можете попробовать разместить это на своем шаблоне one-practice-area.php:

 $args = array( 'post_type'=>'attorney', 'tax_query' => array( array( 'taxonomy' => 'specialty', 'terms' => get_query_var('practice-area'), //get current practice-area's name 'field' => 'slug', ) ) ); $attorneys = get_posts($args); global $post; $tmp_post = $post; if( $attorneys ) : echo "Attorneys<ul>"; foreach( $attorneys as $post ) : setup_postdata($post); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endforeach; $post = $tmp_post; echo "</ul>"; endif; ?>