Navigation
This is archived content. Visit our new forum.
  • Author
    Posts
  • #694198

    Thai
    Moderator

    Thank you for your feedback, @ezeey.

    #705158

    Gabriel
    Participant

    Same here!

    #705314

    Rue Nel
    Moderator

    Noted.
    Thanks for the feedback.

    #763550

    Peter M
    Participant

    How do I set the breadcrumbs to show the category?

    Right now while on a product page, I only show the shop prior to the product, and I want to have the category appear between shop and product.

    Thanks.

    #764037

    Lely
    Moderator
    #764136

    Peter M
    Participant

    That link is broken. Looked at some other threads by searching “breadcrumbs not showing categories”, but no solution for me.

    #764359

    Christopher
    Moderator

    Hi there,

    Sorry about that.

    I put the code here. Please add following code in child theme’s functions.phph file :

    // Breadcrumbs Display Category Name
    // =============================================================================
    
    function get_breadcrumb_category( $cat ) {
       $post = get_post( $post->ID );
       $post_type = $post->post_type;
       $taxonomy = $cat;
    
       $f_categories = wp_get_post_terms( $post->ID, $taxonomy );
       $f_category = $f_categories[0];
    
       if ( $f_category->parent != 0 ) {
          $f_category_id    = $f_category->parent;
          $parent_array     = get_term_by('id', $f_category_id, $taxonomy, 'ARRAY_A');
          $f_category_name  = $parent_array["name"];
          $term_link        = get_term_link( $f_category_id, $taxonomy );
       } else {
          $f_category_id    = $f_category->term_id;
          $f_category_name  = $f_category->name;
          $term_link        = get_term_link( $f_category_id, $taxonomy );
       }
    
       if ( $f_categories && ! is_wp_error($f_categories) ) {
          return '<a href="' . $term_link . '">' . $f_category_name . '</a>';
       } else {
          return '';
       }
    }
    
    function x_breadcrumbs() {
    
        if ( x_get_option( 'x_breadcrumb_display', '1' ) ) {
    
          GLOBAL $post;
    
          $is_ltr         = ! is_rtl();
          $stack          = x_get_stack();
          $delimiter      = x_get_breadcrumb_delimiter();
          $home_text      = x_get_breadcrumb_home_text();
          $home_link      = home_url();
          $current_before = x_get_breadcrumb_current_before();
          $current_after  = x_get_breadcrumb_current_after();
          $page_title     = get_the_title();
          $blog_title     = get_the_title( get_option( 'page_for_posts', true ) );
          $post_parent    = $post->post_parent;
    
          if ( X_WOOCOMMERCE_IS_ACTIVE ) {
            $shop_url   = x_get_shop_link();
            $shop_title = x_get_option( 'x_' . $stack . '_shop_title', __( 'The Shop', '__x__' ) );
            $shop_link  = '<a href="'. $shop_url .'">' . $shop_title . '</a>';
          }
    
          echo '<div class="x-breadcrumbs"><a href="' . $home_link . '">' . $home_text . '</a>' . $delimiter;
    
            if ( is_home() ) {
    
              echo $current_before . $blog_title . $current_after;
    
            } elseif ( is_category() ) {
    
              $the_cat = get_category( get_query_var( 'cat' ), false );
              if ( $the_cat->parent != 0 ) echo '<a href="'.get_permalink(102).'">'.get_the_title(102) .'</a>';
              echo $current_before . single_cat_title( '', false ) . $current_after;
    
            } elseif ( x_is_product_category() ) {
    
              if ( $is_ltr ) {
                echo $shop_link . $delimiter . $current_before . single_cat_title( '', false ) . $current_after;
              } else {
                echo $current_before . single_cat_title( '', false ) . $current_after . $delimiter . $shop_link;
              }
    
            } elseif ( x_is_product_tag() ) {
    
              if ( $is_ltr ) {
                echo $shop_link . $delimiter . $current_before . single_tag_title( '', false ) . $current_after;
              } else {
                echo $current_before . single_tag_title( '', false ) . $current_after . $delimiter . $shop_link;
              }
    
            } elseif ( is_search() ) {
    
              echo $current_before . __( 'Search Results for ', '__x__' ) . '“' . get_search_query() . '”' . $current_after;
    
            } elseif ( is_singular( 'post' ) ) {
    
              if ( get_option( 'page_for_posts' ) == is_front_page() ) {
                echo $current_before . $page_title . $current_after;
              } else {
                if ( $is_ltr ) {
    
                  $f_category = get_the_category();
    
                  if ( $f_category[0]->parent != 0 ) {
                     $f_category_id = $f_category[0]->parent;
                     $f_category_name = get_cat_name( $f_category_id );
                  } else {
                     $f_category_id = $f_category[0]->term_id;
                     $f_category_name = $f_category[0]->name;
                  }
    
                  echo '<a href="' . get_category_link( $f_category_id ) . '">' . $f_category_name . '</a>' . $delimiter . $current_before . $page_title . $current_after;
                } else {
                  echo $current_before . $page_title . $current_after . $delimiter . '<a href="' . get_permalink( get_option( 'page_for_posts' ) ) . '">' . $blog_title . '</a>';
                }
              }
    
            } elseif ( x_is_portfolio() ) {
    
              echo $current_before . get_the_title() . $current_after;
    
            } elseif ( x_is_portfolio_item() ) {
    
              $link  = x_get_parent_portfolio_link();
              $title = x_get_parent_portfolio_title();
    
              if ( $v = get_breadcrumb_category('portfolio-category') ) {
                $portfolio_category = $delimiter . $v;
              } else {
                $portfolio_category = '';
              }
    
              if ( $is_ltr ) {
                echo '<a href="' . $link . '">' . $title . '</a>' . $portfolio_category . $delimiter . $current_before . $page_title . $current_after;
              } else {
                echo $current_before . $page_title . $current_after . $portfolio_category . $delimiter . '<a href="' . $link . '">' . $title . '</a>';
              }
    
            } elseif ( x_is_product() ) {
    
             if ( $v = get_breadcrumb_category('product_cat') ) {
               $product_category = $delimiter . $v;
             } else {
               $product_category = '';
             }
    
              if ( $is_ltr ) {
                echo $shop_link . $product_category . $delimiter . $current_before . $page_title . $current_after;
              } else {
                echo $current_before . $page_title . $current_after . $product_category . $delimiter . $shop_link;
              }
    
            } elseif ( x_is_buddypress() ) {
    
              if ( bp_is_group() ) {
                echo '<a href="' . bp_get_groups_directory_permalink() . '">' . x_get_option( 'x_buddypress_groups_title', __( 'Groups', '__x__' ) ) . '</a>' . $delimiter . $current_before . x_buddypress_get_the_title() . $current_after;
              } elseif ( bp_is_user() ) {
                echo '<a href="' . bp_get_members_directory_permalink() . '">' . x_get_option( 'x_buddypress_members_title', __( 'Members', '__x__' ) ) . '</a>' . $delimiter . $current_before . x_buddypress_get_the_title() . $current_after;
              } else {
                echo $current_before . x_buddypress_get_the_title() . $current_after;
              }
    
            } elseif ( x_is_bbpress() ) {
    
              remove_filter( 'bbp_no_breadcrumb', '__return_true' );
    
              if ( bbp_is_forum_archive() ) {
                echo $current_before . bbp_get_forum_archive_title() . $current_after;
              } else {
                echo bbp_get_breadcrumb();
              }
    
              add_filter( 'bbp_no_breadcrumb', '__return_true' );
    
            } elseif ( is_page() && ! $post_parent ) {
    
              echo $current_before . $page_title . $current_after;
    
            } elseif ( is_page() && $post_parent ) {
    
              $parent_id   = $post_parent;
              $breadcrumbs = array();
    
              if ( is_rtl() ) {
                echo $current_before . $page_title . $current_after . $delimiter;
              }
    
              while ( $parent_id ) {
                $page          = get_page( $parent_id );
                $breadcrumbs[] = '<a href="' . get_permalink( $page->ID ) . '">' . get_the_title( $page->ID ) . '</a>';
                $parent_id     = $page->post_parent;
              }
    
              if ( $is_ltr ) {
                $breadcrumbs = array_reverse( $breadcrumbs );
              }
    
              for ( $i = 0; $i < count( $breadcrumbs ); $i++ ) {
                echo $breadcrumbs[$i];
                if ( $i != count( $breadcrumbs ) -1 ) echo $delimiter;
              }
    
              if ( $is_ltr ) {
                echo $delimiter . $current_before . $page_title . $current_after;
              }
    
            } elseif ( is_tag() ) {
    
              echo $current_before . single_tag_title( '', false ) . $current_after;
    
            } elseif ( is_author() ) {
    
              GLOBAL $author;
              $userdata = get_userdata( $author );
              echo $current_before . __( 'Posts by ', '__x__' ) . '“' . $userdata->display_name . $current_after . '”';
    
            } elseif ( is_404() ) {
    
              echo $current_before . __( '404 (Page Not Found)', '__x__' ) . $current_after;
    
            } elseif ( is_archive() ) {
    
              if ( x_is_shop() ) {
                echo $current_before . $shop_title . $current_after;
              } else {
                echo $current_before . __( 'Archives ', '__x__' ) . $current_after;
              }
    
            }
    
          echo '</div>';
    
        }
    
    }

    Hope it helps.

    #764836

    Peter M
    Participant

    Ok, thanks.

    I’m not using a child theme, though, and that kind of altering of php means I probably should.

    I’ve also held off updating Cornerstone because of all the problems I’ve read about. Do you recommend installing the child theme first, then updating the plugin, or does it matter?

    Thanks

    #765000

    Christopher
    Moderator

    Hi there,

    It really doesn’t matter which one is done sooner.
    Because this requires a template change, I’d advise that you setup a child theme. This allows you to make code changes that won’t be overwritten when an X update is released. After your child theme is setup, please review how we recommend making template changes in Customization Best Practices.

    Thanks.

    #771051

    Peter M
    Participant

    Beautiful – worked like a charm!!

    Thanks so much, you guys rock.

    – Peter.

    #771612

    Christopher
    Moderator

    You’re most welcome.

    #998005

    janih
    Participant

    Hi,

    I pasted the above code to my site specific plugin which is basically functions.php file. When I tried to activate the plugin I got an error: Fatal error: Cannot redeclare x_breadcrumbs()

    What could be wrong?

    #998300

    Jade
    Moderator

    Hi there,

    Kindly try to install the child theme and place the code in the functions.php file.

    Let us know how it goes.

    #999820

    janih
    Participant
    This reply has been marked as private.
    #1000383

    Rad
    Moderator

    Hi there,

    The code is for the product category, this link https://www.valokuvio.net/blogi/tama-on-vain-testi/ is a blog post. And should be done through child theme, but you don’t have active child theme.

    I also checked the code and confirmed working on my end.

    Thanks!