/** * Add active class to menu of post type single template * * @param array $css_classes * * @return array */ public function addActive($css_classes) { $custom_post_type = PostType::get_custom_post_type(); if (\is_single() && \is_singular($custom_post_type) || \is_tax()) { // check - Post is a Custom Post Type $css_classes = \array_filter($css_classes, array($this, 'removeActiveClass')); //get all registered custom post type templates foreach ($custom_post_type as $post_type) { if ($post_type === get_post_type()) { $searching_slug = array(); $templates = PostTypeAbstract::getTemplates($post_type); if (!is_null($templates)) { $pages = Page::getPageByTemplate($templates); foreach ($pages as $page) { $slag = sanitize_title($page->post_title); $searching_slug[] = 'menu-' . $slag; } if (array_intersect($searching_slug, $css_classes)) { $css_classes[] = 'active'; } } } } } return $css_classes; }
/** * * foot path * * @global object $post post object * @return string * @static * @todo change from echo to array, and refactor this method */ public function get_breadcrumbs() { if (function_exists('bcn_display')) { echo bcn_display(); } else { global $post; $home_page_id = \get_option('page_on_front'); $home_link = \get_home_url(); $home = \get_the_title($home_page_id); //$home_link = $this->get_home(); //$home = Translate::translate( 'home' ); if (is_home() || is_front_page()) { echo '<ol class="breadcrumb">'; if ($this->_show_on_home) { echo '<li><a href="' . $home_link . '">' . $home . '</a></li>' . $this->_delimiter . ' ' . "\n"; } $blog_page = $this->get_blog_page(); if (isset($blog_page['title'])) { echo '<li class="active">' . $blog_page['title'] . '</li>' . "\n"; } echo '</ol>' . "\n"; } else { echo '<ol class="breadcrumb"><li><a href="' . $home_link . '">' . $home . '</a></li>' . $this->_delimiter . ' ' . "\n"; if (is_category()) { $this->get_blog_page(); $thisCat = get_category(get_query_var('cat'), false); if ($thisCat->parent != 0) { echo '<li>' . get_category_parents($thisCat->parent, true, ' </li><li> ') . '</li>' . "\n"; } echo $this->_before . Translate::translate('Archive by category') . ' "' . single_cat_title('', false) . '"' . $this->_after; } elseif (is_search()) { echo $this->_before . Translate::translate('Search') . '"' . get_search_query() . '"' . $this->_after; } elseif (is_day()) { echo '<li><a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a></li>' . $this->_delimiter . ' ' . "\n"; echo '<li><a href="' . get_month_link(get_the_time('Y'), get_the_time('m')) . '">' . get_the_time('F') . '</a></li>' . $this->_delimiter . ' ' . "\n"; echo $this->_before . get_the_time('d') . $this->_after; } elseif (is_month()) { echo '<li><a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a></li>' . $this->_delimiter . ' ' . "\n"; echo $this->_before . get_the_time('F') . $this->_after; } elseif (is_year()) { echo $this->_before . get_the_time('Y') . $this->_after; } elseif (is_single() && !is_attachment()) { //custom post types $post_type = get_post_type(); if ($post_type != 'post') { $page_object = \SilverWp\Helper\Page::getPagesByTemplates($post_type); //if page temaplate for page lists is set get page_id if (isset($page_object[0]->ID)) { $page_id = $page_object[0]->ID; } else { //if not return home id $page_id = get_option('page_on_front'); } $this->get_the_page_path($page_id); if ($this->_show_current == 1) { echo ' ' . $this->_delimiter . ' ' . $this->_before . get_the_title() . $this->_after . "\n"; } } else { $cat = get_the_category(); $cat_string = '<li>' . get_category_parents($cat[0]->cat_ID, true, '</li><li>') . '</li>'; echo substr($cat_string, 0, strlen($cat_string) - strlen('</li><li>')) . "\n"; if ($this->_show_current == 1) { echo $this->_before . get_the_title() . $this->_after; } } } elseif (!is_single() && !is_page() && get_post_type() != 'post' && !is_404()) { $post_type = get_post_type_object(get_post_type()); echo $this->_before . $post_type->labels->singular_name . $this->_after; } elseif (is_attachment()) { if ($post->post_parent != 0) { $parent = get_post($post->post_parent); $cat = get_the_category($parent->ID); if (isset($cat[0])) { echo get_category_parents($cat[0], true, ' ' . $this->_delimiter . ' '); } echo '<li><a href="' . get_permalink($parent) . '">' . $parent->post_title . '</a></li>' . "\n"; } if ($this->_show_current == 1) { echo ' ' . $this->_delimiter . ' ' . $this->_before . get_the_title() . $this->_after; } } elseif (is_page() && !$post->post_parent) { if ($this->_show_current == 1) { echo $this->_before . get_the_title() . $this->_after; } } elseif (is_page() && $post->post_parent) { $parent_id = $post->post_parent; $this->get_the_page_path($parent_id); if ($this->_show_current == 1) { echo ' ' . $this->_delimiter . ' ' . $this->_before . get_the_title() . $this->_after; } } elseif (is_tag()) { echo $this->_before . Translate::translate('Posts tagged') . ' "' . single_tag_title('', false) . '"' . $this->_after; } elseif (is_author()) { global $author; $userdata = get_userdata($author); echo $this->_before . Translate::translate('Articles posted by') . ' ' . $userdata->display_name . $this->_after; } elseif (is_404()) { echo $this->_before . Translate::translate('Error 404') . $this->_after; } if (get_query_var('paged')) { /*if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) { }*/ //echo $this->_before; echo '<span class="active"> ('; echo Translate::translate('Page') . ' ' . \get_query_var('paged'); echo ')</span>'; //echo $this->_after; /*if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) { }*/ } echo '</ol>' . "\n"; } } }
/** * Get page id by template name (include language) * * @param array|string $template_name * * @return bool|mixed|null|string * @access public * @static */ public static function getIdByTemplate($template_name) { $template_name = is_array($template_name) ? $template_name : array($template_name); $page = Page::getPageByTemplate($template_name); if (function_exists('icl_object_id')) { $page_id = icl_object_id($page[0]->ID, 'page', true, ICL_LANGUAGE_CODE); } else { $page_id = $page[0]->ID; } return $page_id; }