How to get X theme breadcrumbs to work with Custompress

Hi

X-theme provide the code to integrate a third party CPT with the breadcrumbs that display with the theme. The code is below, but needs the author of the CPT plugin to edit it.. Once edited, I can just add this to the child theme.

Love Custompress, thanks a lot!

// Breadcrumbs
// =============================================================================

if ( ! function_exists( 'x_breadcrumbs' ) ) :
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 ) );

if ( ! is_404() ) {
$post_parent = $post->post_parent;
} else {
$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 = '' . $shop_title . '';
}

echo '<div class="x-breadcrumbs">' . $home_text . '' . $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 get_category_parents( $the_cat->parent, TRUE, $delimiter );
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 ) {
echo '' . $blog_title . '' . $delimiter . $current_before . $page_title . $current_after;
} else {
echo $current_before . $page_title . $current_after . $delimiter . '' . $blog_title . '';
}
}

} 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 ( $is_ltr ) {
echo '' . $title . '' . $delimiter . $current_before . $page_title . $current_after;
} else {
echo $current_before . $page_title . $current_after . $delimiter . '' . $title . '';
}

} elseif ( x_is_product() ) {

if ( $is_ltr ) {
echo $shop_link . $delimiter . $current_before . $page_title . $current_after;
} else {
echo $current_before . $page_title . $current_after . $delimiter . $shop_link;
}

} elseif ( x_is_buddypress() ) {

if ( bp_is_group() ) {
echo '' . x_get_option( 'x_buddypress_groups_title', __( 'Groups', '__x__' ) ) . '' . $delimiter . $current_before . x_buddypress_get_the_title() . $current_after;
} elseif ( bp_is_user() ) {
echo '' . x_get_option( 'x_buddypress_members_title', __( 'Members', '__x__' ) ) . '' . $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[] = 'ID ) . '">' . get_the_title( $page->ID ) . '';
$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>';

}

}
endif;

    Predrag Dubajic

    Hey mattsan,

    Hope you're doing well today

    When you create custom post type it will use default Post template if you don't create one so in theory the breadcrumbs should work out of the box.

    I did check X theme on my installation, it's a bit older version, but I can see that the breadcrumbs are called inside header.php file which is loaded on each page.

    breadcrubms.php file has multiple conditions on where to show breadcrumbs but it doesn't have anything to support custom post types so I'm afraid that this is something best discussed with theme devs.

    What you would need is basically another condition to show breadcrumbs on CPT, something like this:

    elseif ( is_singular( 'MY_CPT' ) ) {
              echo $current_before . $page_title . $current_after;
            }

    Where MY_CPT needs to be replaced with name of your CPT.

    Best regards,
    Predrag