'training', 'posts_per_page' => -1, 'lang' => $current_lang, 'post_status' => 'publish', 'sort' => 'menu_order', 'order' => 'ASC', ); return get_posts($args); } } function get_training_taxonomies() { $taxonomies = get_object_taxonomies('training', 'objects'); $result = array(); foreach ($taxonomies as $taxonomy) { if (!in_array($taxonomy->name, array('language', 'post_translations'))) { $terms = get_terms(array( 'taxonomy' => $taxonomy->name, 'hide_empty' => true, )); if (!is_wp_error($terms) && !empty($terms)) { $result[$taxonomy->name] = array( 'taxonomy' => $taxonomy, 'terms' => $terms ); } } } return $result; } $trainings = get_trainings_for_current_language(); $taxonomies_data = get_training_taxonomies(); $trainings_data = array(); if ($trainings) { foreach ($trainings as $training) { $training_info = array( 'post' => $training, 'name' => '', 'exp' => '', 'short_desc' => '', 'terms' => array() ); if (have_rows('short_info', $training->ID)) { while (have_rows('short_info', $training->ID)) { the_row(); $training_info['name'] = get_sub_field('name'); $training_info['exp'] = get_sub_field('exp'); $training_info['short_desc'] = get_sub_field('short_desc'); } } foreach ($taxonomies_data as $taxonomy_name => $taxonomy_info) { $post_terms = wp_get_post_terms($training->ID, $taxonomy_name); if (!is_wp_error($post_terms)) { $training_info['terms'][$taxonomy_name] = $post_terms; } } $trainings_data[] = $training_info; } } function group_trainings_by_terms($trainings_data, $taxonomies_data) { $grouped = array(); foreach ($taxonomies_data as $taxonomy_name => $taxonomy_info) { $grouped[$taxonomy_name] = array(); foreach ($taxonomy_info['terms'] as $term) { $grouped[$taxonomy_name][$term->slug] = array( 'term' => $term, 'trainings' => array() ); foreach ($trainings_data as $training_data) { if (isset($training_data['terms'][$taxonomy_name])) { foreach ($training_data['terms'][$taxonomy_name] as $training_term) { if ($training_term->slug === $term->slug) { $grouped[$taxonomy_name][$term->slug]['trainings'][] = $training_data; break; } } } } } } return $grouped; } $grouped_trainings = group_trainings_by_terms($trainings_data, $taxonomies_data); if (have_rows('short_info')) { while (have_rows('short_info')) { the_row(); $training_name = get_sub_field('name'); $training_short_desc = get_sub_field('short_desc'); $training_difficulty = get_sub_field('dificulty'); } } ?>
$taxonomy_info): ?>
$terms_data): ?> $term_data): ?>