function vkExUnit_get_pageDescription()
{
    global $wp_query;
    $post = $wp_query->get_queried_object();
    if (is_front_page()) {
        if (isset($post->post_excerpt) && $post->post_excerpt) {
            $pageDescription = get_the_excerpt();
        } else {
            $pageDescription = get_bloginfo('description');
        }
    } else {
        if (is_home()) {
            $page_for_posts = vkExUnit_get_page_for_posts();
            if ($page_for_posts['post_top_use']) {
                $page = get_post($page_for_posts['post_top_id']);
                $pageDescription = $page->post_excerpt;
            } else {
                $pageDescription = get_bloginfo('description');
            }
        } else {
            if (is_category() || is_tax()) {
                if (!$post->description) {
                    $pageDescription = sprintf(__('About %s', 'vkExUnit'), single_cat_title('', false)) . ' ' . get_bloginfo('name') . ' ' . get_bloginfo('description');
                } else {
                    $pageDescription = $post->description;
                }
            } else {
                if (is_tag()) {
                    $pageDescription = strip_tags(tag_description());
                    $pageDescription = str_replace(array("\r\n", "\r", "\n"), '', $pageDescription);
                    // delete br
                    if (!$pageDescription) {
                        $pageDescription = sprintf(__('About %s', 'vkExUnit'), single_tag_title('', false)) . ' ' . get_bloginfo('name') . ' ' . get_bloginfo('description');
                    }
                } else {
                    if (is_archive()) {
                        if (is_year()) {
                            $description_date = get_the_date(_x('Y', 'yearly archives date format', 'vkExUnit'));
                            $pageDescription = sprintf(_x('Article of %s.', 'Yearly archive description', 'vkExUnit'), $description_date);
                            $pageDescription .= ' ' . get_bloginfo('name') . ' ' . get_bloginfo('description');
                        } else {
                            if (is_month()) {
                                $description_date = get_the_date(_x('F Y', 'monthly archives date format', 'vkExUnit'));
                                $pageDescription = sprintf(_x('Article of %s.', 'Archive description', 'vkExUnit'), $description_date);
                                $pageDescription .= ' ' . get_bloginfo('name') . ' ' . get_bloginfo('description');
                            } else {
                                if (is_author()) {
                                    $userObj = get_queried_object();
                                    $pageDescription = sprintf(_x('Article of %s.', 'Archive description', 'vkExUnit'), esc_html($userObj->display_name));
                                    $pageDescription .= ' ' . get_bloginfo('name') . ' ' . get_bloginfo('description');
                                } else {
                                    $postType = get_post_type();
                                    $pageDescription = sprintf(_x('Article of %s.', 'Archive description', 'vkExUnit'), esc_html(get_post_type_object($postType)->labels->name));
                                    $pageDescription .= ' ' . get_bloginfo('name') . ' ' . get_bloginfo('description');
                                }
                            }
                        }
                    } else {
                        if (is_page() || is_single()) {
                            $metaExcerpt = $post->post_excerpt;
                            if ($metaExcerpt) {
                                $pageDescription = $metaExcerpt;
                            } else {
                                $pageDescription = mb_substr(strip_tags($post->post_content), 0, 240);
                                // kill tags and trim 240 chara
                            }
                        } else {
                            $pageDescription = get_bloginfo('description');
                        }
                    }
                }
            }
        }
    }
    global $paged;
    if ($paged != '0') {
        $pageDescription = '[' . sprintf(__('Page of %s', 'vkExUnit'), $paged) . '] ' . $pageDescription;
    }
    $pageDescription = apply_filters('vkExUnit_pageDescriptionCustom', $pageDescription);
    $pageDescription = esc_html(strip_tags($pageDescription));
    // Delete Line break
    $pageDescription = str_replace(array("\r\n", "\r", "\n"), '', $pageDescription);
    return $pageDescription;
}
function vkExUnit_sitemap($atts)
{
    extract(shortcode_atts(array('exclude' => ''), $atts));
    $sitemap_html = '<div class="row veu_sitemap">' . PHP_EOL;
    $options = vkExUnit_get_sitemap_options();
    $exclude = esc_attr($options['excludeId']);
    $exclude = str_replace(',', ',', $exclude);
    $exclude = mb_convert_kana($exclude, 'kvrn');
    /*-------------------------------------------*/
    /* pages
    	/*-------------------------------------------*/
    $sitemap_html .= '<div class="col-md-6 sitemap-col">' . PHP_EOL;
    $sitemap_html .= '<ul class="link-list">' . PHP_EOL;
    $args = array('title_li' => '', 'echo' => 0, 'exclude_tree' => $exclude);
    $sitemap_html .= wp_list_pages($args);
    $sitemap_html .= '</ul><!-- [ /.link-list ] -->' . PHP_EOL;
    $sitemap_html .= '</div><!-- [ /.sitemap-col ] -->' . PHP_EOL;
    /*-------------------------------------------*/
    /* Posts & Custom posts
    	/*-------------------------------------------*/
    $sitemap_html .= '<div class="col-md-6 sitemap-col">' . PHP_EOL;
    $page_for_posts = vkExUnit_get_page_for_posts();
    $allPostTypes = get_post_types(array('public' => true));
    foreach ($allPostTypes as $postType) {
        $post_type_object = get_post_type_object($postType);
        if ($post_type_object) {
            $postType_name = esc_html($post_type_object->name);
            // post-type is post
            if ($postType_name === 'post') {
                $postTypes = array('post');
                $taxonomies = get_taxonomies();
                // Loop all post types
                foreach ($postTypes as $key => $postType) {
                    $sitemap_html .= '<div class="sectionBox">' . PHP_EOL;
                    $post_type_object = get_post_type_object($postType);
                    if ($post_type_object) {
                        // Post type name
                        if ($postType == 'post' && $page_for_posts['post_top_use']) {
                            $postTypeName = $page_for_posts['post_top_name'];
                            $postTypeTopUrl = get_the_permalink($page_for_posts['post_top_id']);
                        } else {
                            $postTypeName = $post_type_object->labels->name;
                            $postTypeTopUrl = home_url() . '/?post_type=' . $postType;
                        }
                        $sitemap_html .= '<h4><a href="' . $postTypeTopUrl . '">' . esc_html($postTypeName) . '</a></h4>' . PHP_EOL;
                        // Loop for all taxonomies
                        foreach ($taxonomies as $key => $taxonomy) {
                            $taxonomy_info = get_taxonomy($taxonomy);
                            // Get tax related post type
                            $taxonomy_postType = $taxonomy_info->object_type[0];
                            if ($taxonomy_postType == $postType && $taxonomy_info->name != 'post_format') {
                                $sitemap_html .= '<h5>' . $taxonomy_info->labels->name . '</h5>' . PHP_EOL;
                                $sitemap_html .= '<ul class="link-list">' . PHP_EOL;
                                $args = array('taxonomy' => $taxonomy, 'title_li' => '', 'orderby' => 'order', 'echo' => 0, 'show_option_none' => '');
                                $sitemap_html .= wp_list_categories($args);
                                $sitemap_html .= '</ul><!-- [ /.link-list ] -->' . PHP_EOL;
                            }
                        }
                    }
                    // end if($post_type_object)
                }
                // end foreach ($postTypes as $key => $postType)
            } else {
                if ($postType_name !== 'page' && $postType_name !== 'attachment') {
                    $customPost_url = home_url() . '/?post_type=' . $postType_name;
                    $sitemap_html .= '<h4><a href="' . $customPost_url . '">' . $post_type_object->labels->name . '</a></h4>' . PHP_EOL;
                    $termNames = get_object_taxonomies($postType_name);
                    foreach ($termNames as $termName) {
                        $termDate = get_taxonomy($termName);
                        $sitemap_html .= '<h5>' . $termDate->label . '</h5>' . PHP_EOL;
                        $sitemap_html .= '<ul class="link-list">' . PHP_EOL;
                        $args = array('taxonomy' => $termDate->name, 'title_li' => '', 'orderby' => 'order', 'echo' => 0, 'show_option_none' => '');
                        $sitemap_html .= wp_list_categories($args);
                        $sitemap_html .= '</ul>' . PHP_EOL;
                    }
                }
            }
            // end not page_type and post_type
        }
        // end if($post_type_object)
    }
    // end foreach ($allPostTypes as $postType)
    $sitemap_html .= '</div><!-- [ /.sectionBox ] -->' . PHP_EOL;
    $sitemap_html .= '</div><!-- [ /.sitemap-col ] -->' . PHP_EOL;
    $sitemap_html .= '</div><!-- [ /.sitemap ] -->' . PHP_EOL;
    return $sitemap_html;
}