diff --git a/src/classes/entities/class-tainacan-item.php b/src/classes/entities/class-tainacan-item.php index 4a035b84e..e38932dc4 100644 --- a/src/classes/entities/class-tainacan-item.php +++ b/src/classes/entities/class-tainacan-item.php @@ -539,10 +539,8 @@ class Item extends Entity { * * @type bool $hide_empty Wether to hide or not metadata the item has no value to * Default: true - * * @type string $empty_value_message Message string to display if $hide_empty is false and there is not metadata value. * Default: '' - * * @type bool $display_slug_as_class Show metadata slug as a class in the div before the metadata block * Default: false * @type string $before String to be added before each metadata block @@ -570,42 +568,52 @@ class Item extends Entity { $return = ''; $defaults = array( - 'metadata' => null, - 'metadata__in' => null, - 'metadata__not_in' => null, - 'exclude_title' => false, - 'exclude_description' => false, - 'exclude_core' => false, - 'hide_empty' => true, - 'empty_value_message' => '', + 'metadata' => null, + 'metadata__in' => null, + 'metadata__not_in' => null, + 'exclude_title' => false, + 'exclude_description' => false, + 'exclude_core' => false, + 'hide_empty' => true, + 'empty_value_message' => '', 'display_slug_as_class' => false, - 'before' => '
', - 'after' => '
', - 'before_title' => '

', - 'after_title' => '

', - 'before_value' => '

', - 'after_value' => '

', + 'before' => '
', + 'after' => '
', + 'before_title' => '

', + 'after_title' => '

', + 'before_value' => '

', + 'after_value' => '

' ); $args = wp_parse_args($args, $defaults); + $item_metadata = array(); - if (!is_null($args['metadata'])) { + // If a single metadata is passed, we use it instead of fetching more + if ( !is_null($args['metadata']) ) { $metadatum = $args['metadata']; $metadatum_object = null; + // A metadatum object was passed if ( $metadatum instanceof \Tainacan\Entities\Metadatum ) { $metadatum_object = $metadatum; + + // A metadatum ID was passed } elseif ( is_int($metadatum) ) { $metadatum_object = $Tainacan_Metadata->fetch($metadatum); + + // A metadatum slug was passed } elseif ( is_string($metadatum) ) { $query = $Tainacan_Metadata->fetch(['slug' => $metadatum], 'OBJECT'); if ( is_array($query) && sizeof($query) == 1 && isset($metadatum[0])) { $metadatum_object = $metadatum[0]; } } - - if ( $metadatum_object instanceof \Tainacan\Entities\Metadatum ) { + // Some checks to see if things are really ok + if ( !($metadatum instanceof \Tainacan\Entities\Metadatum) ) { + return $return; + } else { + // Makes sure the current Metadatum is desired if ( is_array($args['metadata__not_in']) && ( in_array($metadatum_object->get_slug(), $args['metadata__not_in']) || @@ -614,98 +622,184 @@ class Item extends Entity { ) { return $return; } + } - $mto = $metadatum_object->get_metadata_type_object(); - $item_meta = new \Tainacan\Entities\Item_Metadata_Entity($this, $metadatum_object); - if ($item_meta->has_value() || !$args['hide_empty']) { - $before = str_replace('$type', $mto->get_slug(), $args['before']); - if ($args['display_slug_as_class']) { - $before = str_replace('$id', 'metadata-slug-'.$item_meta->get_metadatum()->get_slug() , $before); + // Add it to the array which will be looped bellow + $item_metadata[] = new \Tainacan\Entities\Item_Metadata_Entity($this, $metadatum_object); + + // If not single metadatum is passed, we query them + } else { + + // Build query args ready to be passed to the API fetch + $query_args = []; + $post__in = []; + $post__not_in = []; + $post__name_in = []; + if (is_array($args['metadata__in'])) { + $post__in[] = -1; // If metadata__in is an empty array, this forces empty result + foreach ($args['metadata__in'] as $meta) { + if (is_numeric($meta)) { + $post__in[] = $meta; + } elseif (is_string($meta)) { + $post__name_in[] = $meta; } - else { - $before = str_replace(' $id', '', $before); + } + } + if (is_array($args['metadata__not_in'])) { + foreach ($args['metadata__not_in'] as $meta) { + if (is_integer($meta)) { + $post__not_in[] = $meta; } - $return .= $before; - $return .= $args['before_title'] . $metadatum_object->get_name() . $args['after_title']; - $return .= $args['before_value'] . ( $item_meta->has_value() ? $item_meta->get_value_as_html() : $args['empty_value_message'] ) . $args['after_value']; - $return .= $args['after']; - } - - } - - return $return; - - } - - $query_args = []; - $post__in = []; - $post__not_in = []; - $post__name_in = []; - if (is_array($args['metadata__in'])) { - $post__in[] = -1; // If metadata__in is an empty array, this forces empty result - foreach ($args['metadata__in'] as $meta) { - if (is_numeric($meta)) { - $post__in[] = $meta; - } elseif (is_string($meta)) { - $post__name_in[] = $meta; } } - } - if (is_array($args['metadata__not_in'])) { - foreach ($args['metadata__not_in'] as $meta) { - if (is_integer($meta)) { - $post__not_in[] = $meta; - } + + if (sizeof($post__in) > 0) { + $query_args['post__in'] = $post__in; } + if (sizeof($post__not_in) > 0) { + $query_args['post__not_in'] = $post__not_in; + } + if (sizeof($post__name_in) > 0) { + $query_args['post__name_in'] = $post__name_in; + } + + // Get the item metadata objects from the item repository + $item_metadata = $this->get_metadata($query_args); } - if (sizeof($post__in) > 0) { - $query_args['post__in'] = $post__in; - } - if (sizeof($post__not_in) > 0) { - $query_args['post__not_in'] = $post__not_in; - } - if (sizeof($post__name_in) > 0) { - $query_args['post__name_in'] = $post__name_in; - } + // Loop item metadata to print their "values" as html + $metadatum_index = 0; + foreach ( $item_metadata as $item_metadatum ) { + // Gets the metadata type object to perform some checks + $metadata_type_object = $item_metadatum->get_metadatum()->get_metadata_type_object(); - $metadata = $this->get_metadata($query_args); - - foreach ( $metadata as $item_meta ) { - - $fto = $item_meta->get_metadatum()->get_metadata_type_object(); - - if ( $fto->get_core() ) { + // Core metadata may not be desired as they may be displayed differently + if ( $metadata_type_object->get_core() ) { if ( $args['exclude_core'] ) { continue; - } elseif ( $args['exclude_title'] && $fto->get_related_mapped_prop() == 'title' ) { + } elseif ( $args['exclude_title'] && $metadata_type_object->get_related_mapped_prop() == 'title' ) { continue; - } elseif ( $args['exclude_description'] && $fto->get_related_mapped_prop() == 'description' ) { + } elseif ( $args['exclude_description'] && $metadata_type_object->get_related_mapped_prop() == 'description' ) { continue; } } - if ($item_meta->has_value() || !$args['hide_empty']) { - $before = str_replace('$type', $fto->get_slug(), $args['before']); - if ($args['display_slug_as_class']) { - $before = str_replace('$id', 'metadata-slug-'.$item_meta->get_metadatum()->get_slug() , $before); - } - else { - $before = str_replace(' $id', '', $before); - } - $return .= $before; - $return .= $args['before_title'] . $item_meta->get_metadatum()->get_name() . $args['after_title']; - $return .= $args['before_value'] . ( $item_meta->has_value() ? $item_meta->get_value_as_html() : $args['empty_value_message'] ) . $args['after_value']; - $return .= $args['after']; + // Get the metadatum representation in html, with its label and value + $return .= $this->get_item_metadatum_as_html($item_metadatum, $args, $metadatum_index); - } + $metadatum_index++; } + // Returns the html content created by the function return $return; } + /** + * Return a single item metadata as a HTML string to be used as output. + * + * Each metadata is a label with the metadatum name and the value. + * + * This function expects a $item_metadatum object. For a more generic approach, check the get_metadata_as_html function + * + * @param object $item_metadatum The Item Metadatum object + * @param array|string $args { + * Optional. Array or string of arguments. + * + * @type bool $hide_empty Wether to hide or not metadata the item has no value to + * Default: true + * @type string $empty_value_message Message string to display if $hide_empty is false and there is not metadata value. + * Default: '' + * @type bool $display_slug_as_class Show metadata slug as a class in the div before the metadata block + * Default: false + * @type string $before String to be added before each metadata block + * Default '
' where $type is the metadata type slug + * @type string $after String to be added after each metadata block + * Default '
' + * @type string $before_title String to be added before each metadata title + * Default '

' + * @type string $after_title String to be added after each metadata title + * Default '

' + * @type string $before_value String to be added before each metadata value + * Default '

' + * @type string $after_value String to be added after each metadata value + * Default '

' + * } + * @param int $section_index The Metadatum index, if passed from an array + * + * @return string The HTML output + */ + public function get_item_metadatum_as_html($item_metadatum, $args = array(), $metadatum_index = null) { + + $return = ''; + + $defaults = array( + 'hide_empty' => true, + 'empty_value_message' => '', + 'display_slug_as_class' => false, + 'before' => '
', + 'after' => '
', + 'before_title' => '

', + 'after_title' => '

', + 'before_value' => '

', + 'after_value' => '

' + ); + $args = wp_parse_args($args, $defaults); + + if ($item_metadatum->has_value() || !$args['hide_empty']) { + + // Gets the metadata type object to use it if we need the slug + $metadata_type_object = $item_metadatum->get_metadatum()->get_metadata_type_object(); + + // Get metadatum wrapper tag. + $before = str_replace('$type', $metadata_type_object->get_slug(), $args['before']); + + // Adds class with slug and adds metadatum id + if ($args['display_slug_as_class']) { + $before = str_replace('$id', 'metadata-slug-'.$item_metadatum->get_metadatum()->get_slug() , $before); + } else { + $before = str_replace(' $id', '', $before); + } + + // Let theme authors tweak the wrapper opener + $before = apply_filters( 'tainacan-get-item-metadatum-as-html-before', $before, $item_metadatum ); + $before = apply_filters( 'tainacan-get-item-metadatum-as-html-before--type-' . $item_metadatum->get_metadatum()->get_metadata_type(), $before, $item_metadatum ); + $before = apply_filters( 'tainacan-get-item-metadatum-as-html-before--id-' . $item_metadatum->get_metadatum()->get_id(), $before, $item_metadatum ); + if ( is_numeric($metadatum_index) ) { + $before = apply_filters( 'tainacan-get-item-metadatum-as-html-before--index-' . $metadatum_index, $before, $item_metadatum ); + } + + // Renders the metadatum opener + $return .= $before; + + // Renders metadatum name + $return .= $args['before_title'] . $item_metadatum->get_metadatum()->get_name() . $args['after_title']; + + // Renders the metadatum value + $return .= $args['before_value'] . ( $item_metadatum->has_value() ? $item_metadatum->get_value_as_html() : $args['empty_value_message'] ) . $args['after_value']; + + $after = $args['after']; + + // Let theme authors tweak the wrapper closer + if ( is_numeric($metadatum_index) ) { + $after = apply_filters( 'tainacan-get-item-metadatum-as-html-after--index-' . $metadatum_index, $after, $item_metadatum ); + } + $after = apply_filters( 'tainacan-get-item-metadatum-as-html-after--id-' . $item_metadatum->get_metadatum()->get_id(), $after, $item_metadatum ); + $after = apply_filters( 'tainacan-get-item-metadatum-as-html-after--type-' . $item_metadatum->get_metadatum()->get_metadata_type(), $after, $item_metadatum ); + $after = apply_filters( 'tainacan-get-item-metadatum-as-html-after', $after, $item_metadatum ); + + // Closes the wrapper + $return .= $after; + } + + // Returns the html content created by the function + return $return; + } + + /** + * Gets the document as a html. May be a text, link, iframe, image, audio... + */ public function get_document_as_html($img_size = 'large') { $type = $this->get_document_type(); @@ -777,7 +871,7 @@ class Item extends Entity { } /** - * Gets the attachment as a html, can be iframe, image, audio... + * Gets the attachment as a html. May be an iframe, image, audio... */ public function get_attachment_as_html($attachment, $img_size = 'large') { @@ -854,4 +948,296 @@ class Item extends Entity { $related_items = $Tainacan_Items->fetch_related_items($this, $args); return $related_items; } + + /** + * Return the item metadata sections as a HTML string to be used as output. + * + * Each metadata section is a label with the list of its metadata name and value. + * + * If an ID, a slug or a Tainacan\Entities\Metadata_Section object is passed in the 'metadata_section' argument, it returns only one metadata section, otherwise + * it returns all metadata section + * + * @param array|string $args { + * Optional. Array or string of arguments. + * + * @type mixed $metadata_section Metadatum object, ID or slug to retrieve only one metadatum. empty returns all metadata_sections + * + * @type array $metadata_sections__in Array of metadata_sections IDs or Slugs to be retrieved. Default none + * + * @type array $metadata_sections__not_in Array of metadata_sections IDs (slugs not accepted) to excluded. Default none + * + * @type bool $hide_name Do not display the Metadata Section name. Default false + * + * @type bool $hide_description Do not display the Metadata Section description. Default true + * + * @type bool $hide_empty Wether to hide or not metadata sections if there are no metadata list or they are empty + * Default: true + * @type string $empty_metadata_list_message Message string to display if $hide_empty is false and there is not metadata section metadata list. + * Default: '' + * @type bool $display_slug_as_class Show metadata slug as a class in the div before the metadata block + * Default: true + * @type string $before String to be added before each metadata section block + * Default '
' + * @type string $after String to be added after each metadata section block + * Default '
' + * @type string $before_name String to be added before each metadata section name + * Default '

' + * @type string $after_name String to be added after each metadata section name + * Default '

' + * @type string $before_description String to be added before each metadata section description + * Default '

' + * @type string $after_description String to be added after each metadata section description + * Default '

' + * @type string $before_metadata_list String to be added before each metadata section inner metadata list + * Default '
' + * @type string $after_metadata_list String to be added after each metadata section inner metadata list + * Default '
' + * @type array $metadata_list_args Arguments to be passed to the get_metadata_as_html function when calling section metadata + * } + * + * @return string The HTML output + */ + public function get_metadata_sections_as_html($args = array()) { + + $Tainacan_Metadata_Sections = \Tainacan\Repositories\Metadata_Sections::get_instance(); + + $return = ''; + + $defaults = array( + 'metadata_section' => null, + 'metadata_sections__in' => null, + 'metadata_sections__not_in' => null, + 'hide_name' => false, + 'hide_description' => true, + 'hide_empty' => true, + 'empty_metadata_list_message' => '', + 'display_slug_as_class' => true, + 'before' => '
', + 'after' => '
', + 'before_name' => '

', + 'after_name' => '

', + 'before_metadata_list' => '
', + 'after_metadata_list' => '
', + 'metadata_list_args' => [] + ); + $args = wp_parse_args($args, $defaults); + $metadata_sections = array(); + + // If a single metadata section is passed, we use it instead of fetching more + if ( !is_null($args['metadata_section']) ) { + + $metadata_section = $args['metadata_section']; + $metadata_section_object = null; + + // A metadata section object was passed + if ( $metadata_section instanceof \Tainacan\Entities\Metadata_Section ) { + $metadata_section_object = $metadata_section; + + // A metadata section ID was passed + } elseif ( is_int($metadata_section) ) { + $metadata_section_object = $Tainacan_Metadata_Sections->fetch($metadata_section); + + // A metadata section slug was passed + } elseif ( is_string($metadata_section) ) { + $query = $Tainacan_Metadata_Sections->fetch(['slug' => $metadata_section], 'OBJECT'); + if ( is_array($query) && sizeof($query) == 1 && isset($metadata_section[0]) ) { + $metadata_section_object = $metadata_section[0]; + } + } + + // Some checks to see if things are really ok + if ( !($metadata_section_object instanceof \Tainacan\Entities\Metadata_Section) ) { + return $return; + } else { + // Makes sure the current Metadata Section is desired + if ( is_array($args['metadata_sections__not_in']) + && ( + in_array($metadata_section_object->get_slug(), $args['metadata_sections__not_in']) || + in_array($metadata_section_object->get_id(), $args['metadata_sections__not_in']) + ) + ) { + return $return; + } + } + + // Add it to the array which will be looped bellow + $metadata_sections[] = $metadata_section_object; + + // If not single metadata section is passed, we query them + } else { + + // Build query args ready to be passed to the API fetch + $query_args = []; + $post__in = []; + $post__not_in = []; + $post__name_in = []; + if (is_array($args['metadata_section__in'])) { + $post__in[] = -1; // If metadata_section__in is an empty array, this forces empty result + foreach ($args['metadata_section__in'] as $meta) { + if (is_numeric($meta)) { + $post__in[] = $meta; + } elseif (is_string($meta)) { + $post__name_in[] = $meta; + } + } + } + if (is_array($args['metadata_section__not_in'])) { + foreach ($args['metadata_section__not_in'] as $meta) { + if (is_integer($meta)) { + $post__not_in[] = $meta; + } + } + } + + if (sizeof($post__in) > 0) { + $query_args['post__in'] = $post__in; + } + if (sizeof($post__not_in) > 0) { + $query_args['post__not_in'] = $post__not_in; + } + if (sizeof($post__name_in) > 0) { + $query_args['post__name_in'] = $post__name_in; + } + + // Get metadata section objects from the metadata sections repository + $metadata_sections = $Tainacan_Metadata_Sections->fetch_by_collection($this->get_collection(), $query_args); + } + + // Loop metadata sections to print their "values" as html + $section_index = 0; + foreach ( $metadata_sections as $metadata_section_object ) { + $return .= $this->get_metadata_section_as_html($metadata_section_object, $args, $section_index); + $section_index++; + } + + // Returns the html content created by the function + return $return; + } + + /** + * Return a single item metadata section as a HTML string to be used as output. + * + * A metadata section is a label with the list of its metadata name and value. + * + * This function expects a $metadata_section object. For a more generic approach, check the get_metadata_sections_as_html function + * + * @param object $metadata_section The Metadata Section object + * @param array|string $args { + * Optional. Array or string of arguments. + * + * @type bool $hide_name Do not display the Metadata Section name. Default false + * + * @type bool $hide_description Do not display the Metadata Section description. Default true + * + * @type bool $hide_empty Wether to hide or not metadata sections if there are no metadata list or they are empty + * Default: true + * @type string $empty_metadata_list_message Message string to display if $hide_empty is false and there is not metadata section metadata list. + * Default: '' + * @type bool $display_slug_as_class Show metadata slug as a class in the div before the metadata block + * Default: true + * @type string $before String to be added before each metadata section block + * Default '
' + * @type string $after String to be added after each metadata section block + * Default '
' + * @type string $before_name String to be added before each metadata section name + * Default '

' + * @type string $after_name String to be added after each metadata section name + * Default '

' + * @type string $before_description String to be added before each metadata section description + * Default '

' + * @type string $after_description String to be added after each metadata section description + * Default '

' + * @type string $before_metadata_list String to be added before each metadata section inner metadata list + * Default '
' + * @type string $after_metadata_list String to be added after each metadata section inner metadata list + * Default '
' + * + * @type array $metadata_list_args Arguments to be passed to the get_metadata_as_html function when calling section metadata + * } + * @param int $section_index The Metadata Section index, if passed from an array + * + * @return string The HTML output + */ + public function get_metadata_section_as_html($metadata_section, $args = array(), $section_index = 0) { + + $return = ''; + + $defaults = array( + 'hide_name' => false, + 'hide_description' => true, + 'hide_empty' => true, + 'empty_metadata_list_message' => '', + 'display_slug_as_class' => true, + 'before' => '
', + 'after' => '
', + 'before_name' => '

', + 'after_name' => '

', + 'before_metadata_list' => '
', + 'after_metadata_list' => '
', + 'metadata_list_args' => [] + ); + $args = wp_parse_args($args, $defaults); + + // Gets the metadata section inner metadata list + $metadata_section_metadata_list = $metadata_section->get_metadata_list(); + $has_metadata_list = (is_array($metadata_section_metadata_list) && count($metadata_section_metadata_list) > 0 ); + + if ( $has_metadata_list || !$args['hide_empty'] ) { + + // Get section wrapper tag + $before = $args['before']; + + // Adds section ID to the wrapper element + if ( strpos($before, 'id="') ) { + $before = str_replace('$id', '', $before); // Custom ID passed, no need for this + } else { + $before = str_replace('$id', ' id="metadata-section-id-' . $metadata_section->get_id() . ' ', $before); + } + + // Adds section slug as class to the wrapper element + if ($args['display_slug_as_class']) { + + if ( strpos($before, 'class="') ) { + $before = str_replace('class="', 'class="metadata-section-slug-' . $metadata_section->get_slug() . ' ', $before); + } else { + $before = str_replace('>', ' class="metadata-section-slug-' . $metadata_section->get_slug() . '">', $before); + } + } + + // Let theme authors tweak the wrapper opener + $before = apply_filters( 'tainacan-get-metadata-section-as-html-before', $before, $metadata_section ); + $before = apply_filters( 'tainacan-get-metadata-section-as-html-before--id-' . $metadata_section->get_id(), $before, $metadata_section ); + + // Renders the wrapper opener + $return .= $before; + + // Adds section label (name) + if ( !$args['hide_name'] ) { + $return .= $args['before_name'] . $metadata_section->get_name() . $args['after_name']; + } + + // Adds section description + if ( !$args['hide_description'] ) { + $return .= $args['before_description'] . $metadata_section->get_description() . $args['after_description']; + } + + // Renders the section metadata list, using Items' get_metadata_as_html + $return .= $args['before_metadata_list']; + $return .= ( $has_metadata_list ? $this->get_metadata_as_html( wp_parse_args($args['metadata_list_args'], [ 'metadata__in' => $metadata_section_metadata_list]) ) : $args['empty_metadata_list_message'] ); + $return .= $args['after_metadata_list']; + + // Gets the wrapper closer + $after = $args['after']; + + // Let theme authors tweak the wrapper closer + $after = apply_filters( 'tainacan-get-metadata-section-as-html-after--id-' . $metadata_section->get_id(), $after, $metadata_section ); + $after = apply_filters( 'tainacan-get-metadata-section-as-html-after', $after, $metadata_section ); + + // Closes the wrapper + $return .= $after; + } + + // Returns the html content created by the function + return $return; + } } diff --git a/src/classes/theme-helper/template-tags.php b/src/classes/theme-helper/template-tags.php index 07f9f798b..971f1498e 100644 --- a/src/classes/theme-helper/template-tags.php +++ b/src/classes/theme-helper/template-tags.php @@ -1102,4 +1102,69 @@ function tainacan_has_related_items($item_id = false) { */ function tainacan_the_item_gallery($args = []) { echo \Tainacan\Theme_Helper::get_instance()->get_tainacan_item_gallery($args); +} + + +/** + * Render the item metadata sections as a HTML string. + * + * Each metadata section is a label with the list of its metadata name and value. + * + * If an ID, a slug or a Tainacan\Entities\Metadata_Section object is passed in the 'metadata_section' argument, it returns only one metadata section, otherwise + * it returns all metadata section + * + * @param array|string $args { + * Optional. Array or string of arguments. + * + * @type mixed $metadata_section Metadatum object, ID or slug to retrieve only one metadatum. empty returns all metadata_sections + * + * @type array $metadata_sections__in Array of metadata_sections IDs or Slugs to be retrieved. Default none + * + * @type array $metadata_sections__not_in Array of metadata_sections IDs (slugs not accepted) to excluded. Default none + * + * @type bool $hide_name Do not display the Metadata Section name. Default false + * + * @type bool $hide_description Do not display the Metadata Section description. Default true + * + * @type bool $hide_empty Wether to hide or not metadata sections if there are no metadata list or they are empty + * Default: true + * @type string $empty_metadata_list_message Message string to display if $hide_empty is false and there is not metadata section metadata list. + * Default: '' + * @type bool $display_slug_as_class Show metadata slug as a class in the div before the metadata block + * Default: true + * @type string $before String to be added before each metadata section block + * Default '
' + * @type string $after String to be added after each metadata section block + * Default '
' + * @type string $before_name String to be added before each metadata section name + * Default '

' + * @type string $after_name String to be added after each metadata section name + * Default '

' + * @type string $before_description String to be added before each metadata section description + * Default '

' + * @type string $after_description String to be added after each metadata section description + * Default '

' + * @type string $before_metadata_list String to be added before each metadata section inner metadata list + * Default '
' + * @type string $after_metadata_list String to be added after each metadata section inner metadata list + * Default '
' + * @type array $metadata_list_args Arguments to be passed to the get_metadata_as_html function when calling section metadata + * } + * + * @return string The HTML output + */ +function tainacan_get_the_metadata_sections($args = array(), $item_id = 0) { + + $item = tainacan_get_item( $item_id ); + + if ($item instanceof \Tainacan\Entities\Item) { + return $item->get_metadata_sections_as_html($args); + } + + return ''; + +} + +function tainacan_the_metadata_sections($args = array()) { + echo tainacan_get_the_metadata_sections($args); } \ No newline at end of file