Помогите с php кодом breadcrumbs WP

Тема в разделе "Мегафлуд", создана пользователем Lizart, 1 мар 2015.

  1. Lizart

    Lizart Создатель

    Регистр.:
    13 ноя 2012
    Сообщения:
    15
    Симпатии:
    5
    На сайте есть статьи с длинными заголовками, хлебные крошки - ломают тему сайта.
    Нашла решение для ограничения длинны заголовков записей по количеству символов,
    но это решение для стандартной темы WordPress.
    В моей теме код breadcrumbs выглядит так:
    Код:
    //hook for get disqus count
    if(!function_exists('tm_get_disqus_count')){
        function tm_get_disqus_count($count, $post_id){
            if(is_plugin_active('disqus-comment-system/disqus.php')){
                $return = get_post_meta($post_id,'custom_comment_count',true);
                return $return?$return:0;
            }else{
                return $count;
            }
        }
    }
    add_filter( 'get_comments_number', 'tm_get_disqus_count', 10, 2 );
    
    if(!function_exists('tm_breadcrumbs')){
        function tm_breadcrumbs(){
            /* === OPTIONS === */
            $text['home']     = __('Home','cactusthemes'); // text for the 'Home' link
            $text['category'] = '%s'; // text for a category page
            $text['search']   = __('Search Results for','cactusthemes').' "%s"'; // text for a search results page
            $text['tag']      = __('Tag','cactusthemes').' "%s"'; // text for a tag page
            $text['author']   = __('Author','cactusthemes').' %s'; // text for an author page
            $text['404']      = __('404','cactusthemes'); // text for the 404 page
    
            $show_current   = 1; // 1 - show current post/page/category title in breadcrumbs, 0 - don't show
            $show_on_home   = 1; // 1 - show breadcrumbs on the homepage, 0 - don't show
            $show_home_link = 1; // 1 - show the 'Home' link, 0 - don't show
            $show_title     = 1; // 1 - show the title for the links, 0 - don't show
            $delimiter      = ' \\ '; // delimiter between crumbs
            $before         = '<span class="current">'; // tag before the current crumb
            $after          = '</span>'; // tag after the current crumb
            /* === END OF OPTIONS === */
    
            global $post;
            $home_link    = home_url('/');
            $link_before  = '<span typeof="v:Breadcrumb">';
            $link_after   = '</span>';
            $link_attr    = ' rel="v:url" property="v:title"';
            $link         = $link_before . '<a' . $link_attr . ' href="%1$s">%2$s</a>' . $link_after;
            $parent_id    = $parent_id_2 = ($post) ? $post->post_parent : 0;
            $frontpage_id = get_option('page_on_front');
    
            if (is_front_page()) {
    
                if ($show_on_home == 1) echo '<div class="breadcrumbs"><a href="' . $home_link . '">' . $text['home'] . '</a></div>';
    
            }elseif(is_home()){
                $title = get_option('page_for_posts')?get_the_title(get_option('page_for_posts')):__('Blog','cactusthemes');
                echo '<div class="breadcrumbs"><a href="' . $home_link . '">' . $text['home'] . '</a> \ '.$title.'</div>';
            } else {
    
                echo '<div class="breadcrumbs" xmlns:v="http://rdf.data-vocabulary.org/#">';
                if ($show_home_link == 1) {
                    echo '<a href="' . $home_link . '" rel="v:url" property="v:title">' . $text['home'] . '</a>';
                    if ($frontpage_id == 0 || $parent_id != $frontpage_id) echo $delimiter;
                }
    
                if ( is_category() ) {
                    $this_cat = get_category(get_query_var('cat'), false);
                    if ($this_cat->parent != 0) {
                        $cats = get_category_parents($this_cat->parent, TRUE, $delimiter);
                        if ($show_current == 0) $cats = preg_replace("#^(.+)$delimiter$#", "$1", $cats);
                        $cats = str_replace('<a', $link_before . '<a' . $link_attr, $cats);
                        $cats = str_replace('</a>', '</a>' . $link_after, $cats);
                        if ($show_title == 0) $cats = preg_replace('/ title="(.*?)"/', '', $cats);
                        echo $cats;
                    }
                    if ($show_current == 1) echo $before . sprintf($text['category'], single_cat_title('', false)) . $after;
    
                } elseif ( is_search() ) {
                    echo $before . sprintf($text['search'], get_search_query()) . $after;
    
                } elseif ( is_day() ) {
                    echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;
                    echo sprintf($link, get_month_link(get_the_time('Y'),get_the_time('m')), get_the_time('F')) . $delimiter;
                    echo $before . get_the_time('d') . $after;
    
                } elseif ( is_month() ) {
                    echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;
                    echo $before . get_the_time('F') . $after;
    
                } elseif ( is_year() ) {
                    echo $before . get_the_time('Y') . $after;
    
                } elseif ( is_single() && !is_attachment() ) {
                    if ( get_post_type() != 'post' ) {
                        $post_type = get_post_type_object(get_post_type());
                        $slug = $post_type->rewrite;
                        printf($link, $home_link . '/' . $slug['slug'] . '/', $post_type->labels->singular_name);
                        if ($show_current == 1) echo $delimiter . $before . get_the_title() . $after;
                    } else {
                        $cat = get_the_category(); $cat = $cat[0];
                        $cats = get_category_parents($cat, TRUE, $delimiter);
                        if ($show_current == 0) $cats = preg_replace("#^(.+)$delimiter$#", "$1", $cats);
                        $cats = str_replace('<a', $link_before . '<a' . $link_attr, $cats);
                        $cats = str_replace('</a>', '</a>' . $link_after, $cats);
                        if ($show_title == 0) $cats = preg_replace('/ title="(.*?)"/', '', $cats);
                        echo $cats;
                        if ($show_current == 1) echo $before . get_the_title() . $after;
                    }
    
                } elseif ( !is_single() && !is_page() && get_post_type() != 'post' && !is_404() ) {
                    $post_type = get_post_type_object(get_post_type());
                    echo $before . $post_type->labels->singular_name . $after;
    
                } elseif ( is_attachment() ) {
                    $parent = get_post($parent_id);
                    printf($link, get_permalink($parent), $parent->post_title);
                    if ($show_current == 1) echo $delimiter . $before . get_the_title() . $after;
    
                } elseif ( is_page() && !$parent_id ) {
                    if ($show_current == 1) echo $before . get_the_title() . $after;
    
                } elseif ( is_page() && $parent_id ) {
                    if ($parent_id != $frontpage_id) {
                        $breadcrumbs = array();
                        while ($parent_id) {
                            $page = get_page($parent_id);
                            if ($parent_id != $frontpage_id) {
                                $breadcrumbs[] = sprintf($link, get_permalink($page->ID), get_the_title($page->ID));
                            }
                            $parent_id = $page->post_parent;
                        }
                        $breadcrumbs = array_reverse($breadcrumbs);
                        for ($i = 0; $i < count($breadcrumbs); $i++) {
                            echo $breadcrumbs[$i];
                            if ($i != count($breadcrumbs)-1) echo $delimiter;
                        }
                    }
                    if ($show_current == 1) {
                        if ($show_home_link == 1 || ($parent_id_2 != 0 && $parent_id_2 != $frontpage_id)) echo $delimiter;
                        echo $before . get_the_title() . $after;
                    }
    
                } elseif ( is_tag() ) {
                    echo $before . sprintf($text['tag'], single_tag_title('', false)) . $after;
    
                } elseif ( is_author() ) {
                    global $author;
                    $userdata = get_userdata($author);
                    echo $before . sprintf($text['author'], $userdata->display_name) . $after;
    
                } elseif ( is_404() ) {
                    echo $before . $text['404'] . $after;
                }
    
                if ( get_query_var('paged') ) {
                    if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() || is_home() ) echo ' (';
                    echo __('Page','cactusthemes') . ' ' . get_query_var('paged');
                    if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() || is_home() ) echo ')';
                }
    
                echo '</div><!-- .breadcrumbs -->';
    
            }
        } // end tm_breadcrumbs()
    Помогите применить описанное решение к этому коду, понимаю что это несложно, но у самой не получается.
     
  2. Teceract

    Teceract

    Регистр.:
    15 фев 2009
    Сообщения:
    154
    Симпатии:
    71
    Я сделал обрезку заголовка только в самой записи, на 10 символов, изменить количество знаков можете в коде: $chars_limit = 10;
    Делал на скорую руку, если будет ошибка, отпишитесь.

    PHP:
    if(!function_exists('tm_breadcrumbs')){
        function 
    tm_breadcrumbs(){
            
    /* === OPTIONS === */
            
    $text['home']     = __('Home','cactusthemes'); // text for the 'Home' link
            
    $text['category'] = '%s'// text for a category page
            
    $text['search']   = __('Search Results for','cactusthemes').' "%s"'// text for a search results page
            
    $text['tag']      = __('Tag','cactusthemes').' "%s"'// text for a tag page
            
    $text['author']   = __('Author','cactusthemes').' %s'// text for an author page
            
    $text['404']      = __('404','cactusthemes'); // text for the 404 page

            
    $show_current   1// 1 - show current post/page/category title in breadcrumbs, 0 - don't show
            
    $show_on_home   1// 1 - show breadcrumbs on the homepage, 0 - don't show
            
    $show_home_link 1// 1 - show the 'Home' link, 0 - don't show
            
    $show_title     1// 1 - show the title for the links, 0 - don't show
            
    $delimiter      ' \\ '// delimiter between crumbs
            
    $before         '<span class="current">'// tag before the current crumb
            
    $after          '</span>'// tag after the current crumb
            /* === END OF OPTIONS === */

            
    global $post;
            
    $home_link    home_url('/');
            
    $link_before  '<span typeof="v:Breadcrumb">';
            
    $link_after   '</span>';
            
    $link_attr    ' rel="v:url" property="v:title"';
            
    $link         $link_before '<a' $link_attr ' href="%1$s">%2$s</a>' $link_after;
            
    $parent_id    $parent_id_2 = ($post) ? $post->post_parent 0;
            
    $frontpage_id get_option('page_on_front');

            
    $chars_limit          10;                    // сколько знаков выводить в заголовке
            
    $zagolovok_zapisi     get_the_title();        // получаем заголовок записи
            
    $after_zagolovok     '...';                // выведем свое троеточие после обрезанного заголовка


            
    if (is_front_page()) {

                if (
    $show_on_home == 1) echo '<div class="breadcrumbs"><a href="' $home_link '">' $text['home'] . '</a></div>';

            }elseif(
    is_home()){
                
    $title get_option('page_for_posts')?get_the_title(get_option('page_for_posts')):__('Blog','cactusthemes');
                echo 
    '<div class="breadcrumbs"><a href="' $home_link '">' $text['home'] . '</a> \ '.$title.'</div>';
            } else {

                echo 
    '<div class="breadcrumbs" xmlns:v="http://rdf.data-vocabulary.org/#">';
                if (
    $show_home_link == 1) {
                    echo 
    '<a href="' $home_link '" rel="v:url" property="v:title">' $text['home'] . '</a>';
                    if (
    $frontpage_id == || $parent_id != $frontpage_id) echo $delimiter;
                }

                if ( 
    is_category() ) {
                    
    $this_cat get_category(get_query_var('cat'), false);
                    if (
    $this_cat->parent != 0) {
                        
    $cats get_category_parents($this_cat->parentTRUE$delimiter);
                        if (
    $show_current == 0$cats preg_replace("#^(.+)$delimiter$#""$1"$cats);
                        
    $cats str_replace('<a'$link_before '<a' $link_attr$cats);
                        
    $cats str_replace('</a>''</a>' $link_after$cats);
                        if (
    $show_title == 0$cats preg_replace('/ title="(.*?)"/'''$cats);
                        echo 
    $cats;
                    }
                    if (
    $show_current == 1) echo $before sprintf($text['category'], single_cat_title(''false)) . $after;

                } elseif ( 
    is_search() ) {
                    echo 
    $before sprintf($text['search'], get_search_query()) . $after;

                } elseif ( 
    is_day() ) {
                    echo 
    sprintf($linkget_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;
                    echo 
    sprintf($linkget_month_link(get_the_time('Y'),get_the_time('m')), get_the_time('F')) . $delimiter;
                    echo 
    $before get_the_time('d') . $after;

                } elseif ( 
    is_month() ) {
                    echo 
    sprintf($linkget_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;
                    echo 
    $before get_the_time('F') . $after;

                } elseif ( 
    is_year() ) {
                    echo 
    $before get_the_time('Y') . $after;

                } elseif ( 
    is_single() && !is_attachment() ) {
                    if ( 
    get_post_type() != 'post' ) {
                        
    $post_type get_post_type_object(get_post_type());
                        
    $slug $post_type->rewrite;
                        
    printf($link$home_link '/' $slug['slug'] . '/'$post_type->labels->singular_name);
                        if (
    $show_current == 1) echo $delimiter $before get_the_title() . $after;
                    } else {
                        
    $cat get_the_category(); $cat $cat[0];
                        
    $cats get_category_parents($catTRUE$delimiter);
                        if (
    $show_current == 0$cats preg_replace("#^(.+)$delimiter$#""$1"$cats);
                        
    $cats str_replace('<a'$link_before '<a' $link_attr$cats);
                        
    $cats str_replace('</a>''</a>' $link_after$cats);
                        if (
    $show_title == 0$cats preg_replace('/ title="(.*?)"/'''$cats);
                        echo 
    $cats;
                        if (
    $show_current == 1) echo $before mb_substr($zagolovok_zapisi,0$chars_limit) . $after_zagolovok $after;
                    }

                } elseif ( !
    is_single() && !is_page() && get_post_type() != 'post' && !is_404() ) {
                    
    $post_type get_post_type_object(get_post_type());
                    echo 
    $before $post_type->labels->singular_name $after;

                } elseif ( 
    is_attachment() ) {
                    
    $parent get_post($parent_id);
                    
    printf($linkget_permalink($parent), $parent->post_title);
                    if (
    $show_current == 1) echo $delimiter $before get_the_title() . $after;

                } elseif ( 
    is_page() && !$parent_id ) {
                    if (
    $show_current == 1) echo $before get_the_title() . $after;

                } elseif ( 
    is_page() && $parent_id ) {
                    if (
    $parent_id != $frontpage_id) {
                        
    $breadcrumbs = array();
                        while (
    $parent_id) {
                            
    $page get_page($parent_id);
                            if (
    $parent_id != $frontpage_id) {
                                
    $breadcrumbs[] = sprintf($linkget_permalink($page->ID), get_the_title($page->ID));
                            }
                            
    $parent_id $page->post_parent;
                        }
                        
    $breadcrumbs array_reverse($breadcrumbs);
                        for (
    $i 0$i count($breadcrumbs); $i++) {
                            echo 
    $breadcrumbs[$i];
                            if (
    $i != count($breadcrumbs)-1) echo $delimiter;
                        }
                    }
                    if (
    $show_current == 1) {
                        if (
    $show_home_link == || ($parent_id_2 != && $parent_id_2 != $frontpage_id)) echo $delimiter;
                        echo 
    $before get_the_title() . $after;
                    }

                } elseif ( 
    is_tag() ) {
                    echo 
    $before sprintf($text['tag'], single_tag_title(''false)) . $after;

                } elseif ( 
    is_author() ) {
                    global 
    $author;
                    
    $userdata get_userdata($author);
                    echo 
    $before sprintf($text['author'], $userdata->display_name) . $after;

                } elseif ( 
    is_404() ) {
                    echo 
    $before $text['404'] . $after;
                }

                if ( 
    get_query_var('paged') ) {
                    if ( 
    is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() || is_home() ) echo ' (';
                    echo 
    __('Page','cactusthemes') . ' ' get_query_var('paged');
                    if ( 
    is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() || is_home() ) echo ')';
                }

                echo 
    '</div><!-- .breadcrumbs -->';

            }
        } 
    // end tm_breadcrumbs()
    }
     
    Lizart нравится это.
  3. Lizart

    Lizart Создатель

    Регистр.:
    13 ноя 2012
    Сообщения:
    15
    Симпатии:
    5
    Если копировать код целиком - страница выдает белый экран.

    Вставила отдельно только ваши правки - вроде работает. Копаю дальше, благодарю.
     
    Последнее редактирование: 2 мар 2015