function mbdb_tax_grid_content($attr, $content) { $attr = shortcode_atts(array('taxonomy' => '', 'term' => ''), $attr); global $wp_query; if (isset($wp_query->query_vars['the-term'])) { $term = trim(urldecode($wp_query->query_vars['the-term']), '/'); } else { $term = $attr['term']; } if (isset($wp_query->query_vars['the-taxonomy'])) { $taxonomy = trim(urldecode($wp_query->query_vars['the-taxonomy']), '/'); } else { $taxonomy = $attr['taxonomy']; } if ($taxonomy == '' || $term == '') { return __('There was an error!', 'mooberry-book-manager'); } $selection = str_replace('mbdb_', '', $taxonomy); //$groups[1] = $selection; $groups[1] = 'none'; $groups[2] = 'none'; //$current_group = array($selection => 0, 'none' => 0); $current_group = array('none' => 0); $sort = mbdb_set_sort($groups, 'titleA'); // set sort varialbles //list( $orderby, $order ) = MBDB()->books->get_sort_fields( $sort ); // get id $term_obj = get_term_by('slug', $term, $taxonomy); if ($term_obj != null) { $selected_ids = array((int) $term_obj->term_id); } else { $selected_ids = null; } $books = apply_filters('mbdb_tax_grid_get_group', mbdb_get_group(1, $groups, $current_group, $selection, $selected_ids, $sort, null), $groups, $current_group, $selection, $selected_ids, $sort, $term); //$orderby, $order, null); /********************* term meta ***************************************/ if (function_exists('get_term_meta')) { $content = '<p>' . get_term_meta($selected_ids[0], $taxonomy . '_book_grid_description', true) . '</p>'; $content2 = '<p>' . get_term_meta($selected_ids[0], $taxonomy . '_book_grid_description_bottom', true) . '</p>'; } else { $content = ''; $content2 = ''; } return $content . mbdb_display_grid($books, 0) . $content2; }
/** * Get books by taxonomy * * @since * @param [int] $level the nested level of the grid we're currently one * @param [array] $groups the groups in grid * @param [array] $current_group the id of the current group. Could be id of a * series, genre, publisher, illustrator, etc. * @param [string] $selection what selection of books for the grid ('all', * 'unpublished', 'series', etc.) * @param [array] $selected_ids ids of the selection * @param [string] $sort represents sort, ie 'titleA', 'titleD', * 'series, etc. * @param [array] $book_ids optional list of book_ids to filter by, useful * for add-on plugins to add on to grid (ie MA) * * @return array of books * * @access public */ function mbdb_get_books_by_taxonomy($level, $groups, $current_group, $selection, $selected_ids, $sort, $book_ids) { $books = array(); // Get ones not in the taxonomy first $current_group[$groups[$level]] = -1; // recursively get the next nested group of books $results = mbdb_get_group($level + 1, $groups, $current_group, $selection, $selected_ids, $sort, $book_ids); // only return results if are any so that headers of empty groups // aren't displayed if (count($results) > 0) { switch ($groups[$level]) { case 'genre': $empty = apply_filters('mbdb_book_grid_uncategorized_heading', __('Uncategorized', 'mooberry-book-manager')); break; case 'series': $empty = apply_filters('mbdb_book_grid_standalones_heading', __('Standalones', 'mooberry-book-manager')); break; case 'tag': $empty = apply_filters('mbdb_book_grid_untagged_heading', __('Untagged', 'mooberry-book-manager')); break; case 'editor': $empty = apply_filters('mbdb_book_grid_uncategorized_heading', __('No Editor Specified', 'mooberry-book-manager')); break; case 'illustrator': $empty = apply_filters('mbdb_book_grid_uncategorized_heading', __('No Illustrator Specified', 'mooberry-book-manager')); break; case 'cover_artist': $empty = apply_filters('mbdb_book_grid_uncategorized_heading', __('No Cover Artist Specified', 'mooberry-book-manager')); break; } $books[$empty] = $results; } // loop through each term // and recursively get the next nested group of books for that term $terms_query = array('orderby' => 'slug', 'hide_empty' => true); // if we're grouping by what we're filtering by, only get terms that we're filtering on if ($groups[$level] == $selection) { $terms_query['include'] = $selected_ids; } $all_terms = get_terms('mbdb_' . $groups[$level], $terms_query); $taxonomy = get_taxonomy('mbdb_' . $groups[$level]); // loop through all the terms foreach ($all_terms as $term) { $current_group[$groups[$level]] = $term->term_id; $results = mbdb_get_group($level + 1, $groups, $current_group, $selection, $selected_ids, $sort, $book_ids); // only return results if are any so that headers of empty groups // aren't displayed if (count($results) > 0) { if (in_array($groups[$level], array('genre', 'series', 'tag'))) { $heading = $term->name . ' ' . $taxonomy->labels->singular_name; } else { $heading = $taxonomy->labels->singular_name . ' ' . $term->name; } $books[apply_filters('mbdb_book_grid_heading', $heading)] = $results; } } return $books; }