- This topic has 4 replies, 2 voices, and was last updated 3 years, 10 months ago by Tom.
-
AuthorPosts
-
May 21, 2020 at 5:08 am #1295189Andrew
Hello,
In the announcement of the post I want to indicate the category and subcategory.
How can i do this?
Best RegardsMay 21, 2020 at 2:30 pm #1295967TomLead DeveloperLead DeveloperHi there,
The standard WordPress function to display categories doesn’t support this. Perhaps some sort of breadcrumb solution is what you’re looking for?
Not sure if you’re using Yoast SEO, but it has a breadcrumbs feature. There are also other breadcrumb plugins out there that should give you this sort of control.
Let me know 🙂
May 21, 2020 at 10:09 pm #1296202AndrewI do not use the plugin Yoast SEO.
As I understand it, this plugin does not solve my question of creating breadcrumbs in this area.
To create breadcrumbs, I use this code. This works very well with the theme GeneratePress.
functions.phpfunction dimox_breadcrumbs() { $text['home'] = 'Home'; $text['category'] = '%s'; $text['search'] = 'Search "%s"'; $text['tag'] = 'Tag "%s"'; $text['author'] = 'Author %s'; $text['404'] = 'Error 404'; $text['page'] = 'Page %s'; $text['cpage'] = 'Comment %s'; $wrap_before = '<div class="breadcrumbs" itemscope itemtype="http://schema.org/BreadcrumbList">'; $wrap_after = '</div><!-- .breadcrumbs -->'; $sep = '<span class="breadcrumbs__separator"> › </span>'; $before = '<span class="breadcrumbs__current">'; $after = '</span>'; $show_on_home = 0; $show_home_link = 1; $show_current = 1; $show_last_sep = 1; global $post; $home_url = home_url('/'); $link = '<span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">'; $link .= '<a class="breadcrumbs__link" href="%1$s" itemprop="item"><span itemprop="name">%2$s</span></a>'; $link .= '<meta itemprop="position" content="%3$s" />'; $link .= '</span>'; $parent_id = ( $post ) ? $post->post_parent : ''; $home_link = sprintf( $link, $home_url, $text['home'], 1 ); if ( is_home() || is_front_page() ) { if ( $show_on_home ) echo $wrap_before . $home_link . $wrap_after; } else { $position = 0; echo $wrap_before; if ( $show_home_link ) { $position += 1; echo $home_link; } if ( is_category() ) { $parents = get_ancestors( get_query_var('cat'), 'category' ); foreach ( array_reverse( $parents ) as $cat ) { $position += 1; if ( $position > 1 ) echo $sep; echo sprintf( $link, get_category_link( $cat ), get_cat_name( $cat ), $position ); } if ( get_query_var( 'paged' ) ) { $position += 1; $cat = get_query_var('cat'); echo $sep . sprintf( $link, get_category_link( $cat ), get_cat_name( $cat ), $position ); echo $sep . $before . sprintf( $text['page'], get_query_var( 'paged' ) ) . $after; } else { if ( $show_current ) { if ( $position >= 1 ) echo $sep; echo $before . sprintf( $text['category'], single_cat_title( '', false ) ) . $after; } elseif ( $show_last_sep ) echo $sep; } } elseif ( is_search() ) { if ( get_query_var( 'paged' ) ) { $position += 1; if ( $show_home_link ) echo $sep; echo sprintf( $link, $home_url . '?s=' . get_search_query(), sprintf( $text['search'], get_search_query() ), $position ); echo $sep . $before . sprintf( $text['page'], get_query_var( 'paged' ) ) . $after; } else { if ( $show_current ) { if ( $position >= 1 ) echo $sep; echo $before . sprintf( $text['search'], get_search_query() ) . $after; } elseif ( $show_last_sep ) echo $sep; } } elseif ( is_year() ) { if ( $show_home_link && $show_current ) echo $sep; if ( $show_current ) echo $before . get_the_time('Y') . $after; elseif ( $show_home_link && $show_last_sep ) echo $sep; } elseif ( is_month() ) { if ( $show_home_link ) echo $sep; $position += 1; echo sprintf( $link, get_year_link( get_the_time('Y') ), get_the_time('Y'), $position ); if ( $show_current ) echo $sep . $before . get_the_time('F') . $after; elseif ( $show_last_sep ) echo $sep; } elseif ( is_day() ) { if ( $show_home_link ) echo $sep; $position += 1; echo sprintf( $link, get_year_link( get_the_time('Y') ), get_the_time('Y'), $position ) . $sep; $position += 1; echo sprintf( $link, get_month_link( get_the_time('Y'), get_the_time('m') ), get_the_time('F'), $position ); if ( $show_current ) echo $sep . $before . get_the_time('d') . $after; elseif ( $show_last_sep ) echo $sep; } elseif ( is_single() && ! is_attachment() ) { if ( get_post_type() != 'post' ) { $position += 1; $post_type = get_post_type_object( get_post_type() ); if ( $position > 1 ) echo $sep; echo sprintf( $link, get_post_type_archive_link( $post_type->name ), $post_type->labels->name, $position ); if ( $show_current ) echo $sep . $before . get_the_title() . $after; elseif ( $show_last_sep ) echo $sep; } else { $cat = get_the_category(); $catID = $cat[0]->cat_ID; $parents = get_ancestors( $catID, 'category' ); $parents = array_reverse( $parents ); $parents[] = $catID; foreach ( $parents as $cat ) { $position += 1; if ( $position > 1 ) echo $sep; echo sprintf( $link, get_category_link( $cat ), get_cat_name( $cat ), $position ); } if ( get_query_var( 'cpage' ) ) { $position += 1; echo $sep . sprintf( $link, get_permalink(), get_the_title(), $position ); echo $sep . $before . sprintf( $text['cpage'], get_query_var( 'cpage' ) ) . $after; } else { if ( $show_current ) echo $sep . $before . get_the_title() . $after; elseif ( $show_last_sep ) echo $sep; } } } elseif ( is_post_type_archive() ) { $post_type = get_post_type_object( get_post_type() ); if ( get_query_var( 'paged' ) ) { $position += 1; if ( $position > 1 ) echo $sep; echo sprintf( $link, get_post_type_archive_link( $post_type->name ), $post_type->label, $position ); echo $sep . $before . sprintf( $text['page'], get_query_var( 'paged' ) ) . $after; } else { if ( $show_home_link && $show_current ) echo $sep; if ( $show_current ) echo $before . $post_type->label . $after; elseif ( $show_home_link && $show_last_sep ) echo $sep; } } elseif ( is_attachment() ) { $parent = get_post( $parent_id ); $cat = get_the_category( $parent->ID ); $catID = $cat[0]->cat_ID; $parents = get_ancestors( $catID, 'category' ); $parents = array_reverse( $parents ); $parents[] = $catID; foreach ( $parents as $cat ) { $position += 1; if ( $position > 1 ) echo $sep; echo sprintf( $link, get_category_link( $cat ), get_cat_name( $cat ), $position ); } $position += 1; echo $sep . sprintf( $link, get_permalink( $parent ), $parent->post_title, $position ); if ( $show_current ) echo $sep . $before . get_the_title() . $after; elseif ( $show_last_sep ) echo $sep; } elseif ( is_page() && ! $parent_id ) { if ( $show_home_link && $show_current ) echo $sep; if ( $show_current ) echo $before . get_the_title() . $after; elseif ( $show_home_link && $show_last_sep ) echo $sep; } elseif ( is_page() && $parent_id ) { $parents = get_post_ancestors( get_the_ID() ); foreach ( array_reverse( $parents ) as $pageID ) { $position += 1; if ( $position > 1 ) echo $sep; echo sprintf( $link, get_page_link( $pageID ), get_the_title( $pageID ), $position ); } if ( $show_current ) echo $sep . $before . get_the_title() . $after; elseif ( $show_last_sep ) echo $sep; } elseif ( is_tag() ) { if ( get_query_var( 'paged' ) ) { $position += 1; $tagID = get_query_var( 'tag_id' ); echo $sep . sprintf( $link, get_tag_link( $tagID ), single_tag_title( '', false ), $position ); echo $sep . $before . sprintf( $text['page'], get_query_var( 'paged' ) ) . $after; } else { if ( $show_home_link && $show_current ) echo $sep; if ( $show_current ) echo $before . sprintf( $text['tag'], single_tag_title( '', false ) ) . $after; elseif ( $show_home_link && $show_last_sep ) echo $sep; } } elseif ( is_author() ) { $author = get_userdata( get_query_var( 'author' ) ); if ( get_query_var( 'paged' ) ) { $position += 1; echo $sep . sprintf( $link, get_author_posts_url( $author->ID ), sprintf( $text['author'], $author->display_name ), $position ); echo $sep . $before . sprintf( $text['page'], get_query_var( 'paged' ) ) . $after; } else { if ( $show_home_link && $show_current ) echo $sep; if ( $show_current ) echo $before . sprintf( $text['author'], $author->display_name ) . $after; elseif ( $show_home_link && $show_last_sep ) echo $sep; } } elseif ( is_404() ) { if ( $show_home_link && $show_current ) echo $sep; if ( $show_current ) echo $before . $text['404'] . $after; elseif ( $show_last_sep ) echo $sep; } elseif ( has_post_format() && ! is_singular() ) { if ( $show_home_link && $show_current ) echo $sep; echo get_post_format_string( get_post_format() ); } echo $wrap_after; } } // end of dimox_breadcrumbs()
single.php
if ( function_exists( 'dimox_breadcrumbs' ) ) dimox_breadcrumbs();
May 22, 2020 at 6:19 am #1296598AndrewThe issue has been resolved. That’s my fault. Thank you!
May 22, 2020 at 9:30 am #1296944TomLead DeveloperLead DeveloperGlad you found a solution! 🙂
-
AuthorPosts
- You must be logged in to reply to this topic.