Как отобразить пользовательскую таксономию и термины с использованием / созданием шаблона плагина

Я работаю над плагином, который требует пользовательской таксономии и 3-х терминов (Personal, Group & Pets). У меня уже есть таксономия, созданная с условиями и некоторыми образцами. Я создал шаблон для моей пользовательской таксономии, которая в настоящее время показывает тот же результат для каждой категории (термин). Мне нужен вывод для отображения только сообщений в текущем выбранном терминале. Поэтому, если просмотр из example.com/user_image_category/group/ – он должен отображать только сообщения для «группы».

Обратите внимание, что я пытаюсь сделать это, не касаясь папки темы. И, прошу прощения, если код немного … грубый, мягко говоря. Я собрал несколько вещей, которые я нашел, но исправил совсем немного – я обычно занимаюсь темами и плагинами SMALL.

функция плагина:

 add_filter('template_include', 'sui_user_image_cat_template', 99); custom taxonomy / category function sui_user_image_cat_template( $template ) { if ( is_tax('sui_image_category') ) { $new_template = plugin_dir_path(__FILE__) . 'templates/taxonomy-user_image_category.php'; if ( '' != $new_template ) { return $new_template; } } return $template; } 

taxonomy-user_image_category.php :

 <?php /** * user_images_category taxonomy archive */ get_header(); ?> <div id="container"> <div id="content" role="main"> <h2>Contest Photos: </h2><br /> <div id="category-navigation"> <?php // put these in UL LI format if time allows $terms = get_terms('sui_image_category'); foreach ($terms as $term) { $term_link = get_term_link($term, 'user_images'); if( is_wp_error($term_link) ) continue; echo '<span class="category-link"><a href="' . $term_link . '">' . $term->name . '</a></span> '; } ?> <br /><br /> </div> <div id="gridContainer"> <?php $c = 1; //init counter $bpr = 3; //boxes per row $args = array( 'post_type' => 'user_images', 'post_status' => 'publish' ); $posts = new WP_Query($args); if($posts->post_count){ foreach($posts->posts as $user_image){ $user_info = get_userdata($user_image->post_author); $user_image_cats = get_the_terms($user_image->ID, 'sui_image_category'); foreach($user_image_cats as $cat){ $user_image_cat = $cat->name; } $post_thumbnail_id = get_post_thumbnail_id($user_image->ID); ?> <div class="contest-entry" id="post-<?php echo $post_thumbnail_id ?>"> <div class="contest-image"> <?php echo wp_get_attachment_link($post_thumbnail_id, 'medium'); ?> </div> <div class="row"> <div class="votes half left-align">&hearts;</div> <div class="category half right-align"> <a href="<?php echo get_term_link($cat) ?>"> <?php echo $user_image_cat ?> </a> </div> </div> <p class="image-caption"><?php echo $user_image->post_title ?></p> <a class="author" href="#"><?php echo $user_info->user_login ?></a> </div> <?php if($c == $bpr) : ?> <div class="clr"></div> <?php $c = 0; endif; ?> <?php $c++; } }; ?> <div class="clr"></div> </div> </div><!-- #content --> </div><!-- #container --> <?php get_footer(); ?> 

В taxonomy-user_image_category.php метод get_queried_object возвращает объект term, который вы можете включить в свой WP_Query . С головы, в вашем случае это может выглядеть так:

 $queried_object = get_queried_object(); $term_id = $queried_object->term_id; $args = array( 'post_type' => 'user_images', 'post_status' => 'publish', 'tax_query' => array( array( 'taxonomy' => 'sui_image_category', 'field' => 'id', 'terms' => $term_id ) ) ); $posts = new WP_Query($args);