С пост тайпами разобрались, теперь давайте попробуем разобраться что такое таксономия. Таксономия в WordPress это абстрактное понятие, применимое для группировки элементов пост тайпа по какому-нибудь признаку.
Вот к примеру категория в записях(постах) это таксономия.
Или к примеру у пост тайпа sp_portfolio нужно как-то группировать элементы. Давайте попробуем это сделать. Создадим свою таксономию которая будет относится к пост тайпу sp_portfolio.
Для создания таксономий в SP Framework есть класс SP_Framework_Taxonomy.
Для создания таксономии добавим следующий код в файл taxonomies.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
/* * Taxonomies */ $spCT = new SP_Framework_Taxonomy(); $args = array( 'taxonomy' => 'sp_portfolio_tax', 'slug' => 'sp_portfolio_tax', 'post_type' => 'sp_portfolio', 'name' => 'Category', 'singular_name' => 'Category', 'menu_name' => 'Category', 'all_items' => 'All', 'edit_item' => 'Edit', 'view_item' => 'View', 'update_item' => 'Update', 'add_new_item' => 'Add', 'new_item_name' => 'New', ); $spCT->create($args); |
Теперь настроим вывод изменив немного функцию sp_get_portfolio_section()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
function sp_get_portfolio_section($result=null){ $result .= '<div id="portfolio" class="portfolio portfolio-nomargin grid-container portfolio-notitle portfolio-full grid-container clearfix">'; $args = array( 'post_type' => 'sp_portfolio', 'order' => 'asc', ); $spPosts = SP_Framework_Post_Type_Utility::get_list($args); if(count($spPosts)>0){ foreach ($spPosts as $spPost) { $postID = $spPost['id']; $title = $spPost['title']; $url = $spPost['url']; $image = SP_Framework_Post_Type_Utility::get_image($postID, 'full'); $result .= '<article class="portfolio-item pf-media pf-icons">'; $result .= '<div class="portfolio-image">'; $result .= '<a href="'.$url.'">'; $result .= '<img src="'.$image.'" alt="Open Imagination">'; $result .= '</a>'; $result .= '<div class="portfolio-overlay"></div>'; $result .= '</div>'; $result .= '<div class="portfolio-desc">'; $result .= '<h3><a href="'.$url.'">'.$title.'</a></h3>'; $terms = get_the_terms($postID , 'sp_portfolio_tax'); if(is_array($terms)){ $result .= '<span>'; foreach($terms as $term){ $result .= '<a href="'. get_term_link($term->term_id, $term->taxonomy ) .'">'. $term->name .'</a> '; } $result .= '</span>'; } $result .= '</div>'; $result .= '</article>'; } } $result .= '</div>'; return $result; } |