实际上,您需要将breadcrumbs函数挂接到在购物车和检查页面中激发的任何挂钩上。在下面的例子中,我调用了the_dramatist_show_breadcrumbs
我已经迷上了woocommerce_before_cart
对于购物车页面和woocommerce_before_checkout_form
用于签出表单。整个代码块如下所示-
For minimal usage ( Only at pages, As you wanted in comment )-
根据您的评论进行更新。这个东西也经过了测试。
add_action( \'woocommerce_before_cart\', \'the_dramatist_page_breadcrumbs\');
add_action( \'woocommerce_before_checkout_form\', \'the_dramatist_page_breadcrumbs\');
// Breadcrumbs
function the_dramatist_page_breadcrumbs() {
// Settings
$separator = \'>\';
$breadcrums_id = \'breadcrumbs\';
$breadcrums_class = \'breadcrumbs\';
$home_title = \'Homepage\';
// Get the query & post information
global $post,$wp_query;
echo \'<style>
#breadcrumbs{
list-style:none;
margin:10px 0;
overflow:hidden;
}
#breadcrumbs li{
display:inline-block;
vertical-align:middle;
margin-right:15px;
}
#breadcrumbs .separator{
font-size:18px;
font-weight:100;
color:#ccc;
}
</style>\';
// Build the breadcrums
echo \'<ul id="\' . $breadcrums_id . \'" class="\' . $breadcrums_class . \'">\';
// Home page
echo \'<li class="item-home"><a class="bread-link bread-home" href="\' . get_home_url() . \'" title="\' . $home_title . \'">\' . $home_title . \'</a></li>\';
echo \'<li class="separator separator-home"> \' . $separator . \' </li>\';
if ( is_archive() && !is_tax() && !is_category() && !is_tag() ) {
echo \'<li class="item-current item-archive"><strong class="bread-current bread-archive">\' . post_type_archive_title($prefix, false) . \'</strong></li>\';
} else {
// Standard page
if( $post->post_parent ){
// If child page, get parents
$anc = get_post_ancestors( $post->ID );
// Get parents in the right order
$anc = array_reverse($anc);
// Parent page loop
if ( !isset( $parents ) ) $parents = null;
foreach ( $anc as $ancestor ) {
$parents .= \'<li class="item-parent item-parent-\' . $ancestor . \'"><a class="bread-parent bread-parent-\' . $ancestor . \'" href="\' . get_permalink($ancestor) . \'" title="\' . get_the_title($ancestor) . \'">\' . get_the_title($ancestor) . \'</a></li>\';
$parents .= \'<li class="separator separator-\' . $ancestor . \'"> \' . $separator . \' </li>\';
}
// Display parent pages
echo $parents;
// Current page
echo \'<li class="item-current item-\' . $post->ID . \'"><strong title="\' . get_the_title() . \'"> \' . get_the_title() . \'</strong></li>\';
} else {
// Just display current page if not parents
echo \'<li class="item-current item-\' . $post->ID . \'"><strong class="bread-current bread-\' . $post->ID . \'"> \' . get_the_title() . \'</strong></li>\';
}
}
echo \'</ul>\';
}
And for generic usage- add_action( \'woocommerce_before_cart\', \'the_dramatist_show_breadcrumbs\');
add_action( \'woocommerce_before_checkout_form\', \'the_dramatist_show_breadcrumbs\');
// Breadcrumbs
function the_dramatist_breadcrumbs() {
// Settings
$separator = \'>\';
$breadcrums_id = \'breadcrumbs\';
$breadcrums_class = \'breadcrumbs\';
$home_title = \'Homepage\';
// If you have any custom post types with custom taxonomies, put the taxonomy name below (e.g. product_cat)
$custom_taxonomy = \'product_cat\';
// Get the query & post information
global $post,$wp_query;
echo \'<style>
#breadcrumbs{
list-style:none;
margin:10px 0;
overflow:hidden;
}
#breadcrumbs li{
display:inline-block;
vertical-align:middle;
margin-right:15px;
}
#breadcrumbs .separator{
font-size:18px;
font-weight:100;
color:#ccc;
}
</style>\';
// Do not display on the homepage
if ( !is_front_page() ) {
// Build the breadcrums
echo \'<ul id="\' . $breadcrums_id . \'" class="\' . $breadcrums_class . \'">\';
// Home page
echo \'<li class="item-home"><a class="bread-link bread-home" href="\' . get_home_url() . \'" title="\' . $home_title . \'">\' . $home_title . \'</a></li>\';
echo \'<li class="separator separator-home"> \' . $separator . \' </li>\';
if ( is_archive() && !is_tax() && !is_category() && !is_tag() ) {
echo \'<li class="item-current item-archive"><strong class="bread-current bread-archive">\' . post_type_archive_title($prefix, false) . \'</strong></li>\';
} else if ( is_archive() && is_tax() && !is_category() && !is_tag() ) {
// If post is a custom post type
$post_type = get_post_type();
// If it is a custom post type display name and link
if($post_type != \'post\') {
$post_type_object = get_post_type_object($post_type);
$post_type_archive = get_post_type_archive_link($post_type);
echo \'<li class="item-cat item-custom-post-type-\' . $post_type . \'"><a class="bread-cat bread-custom-post-type-\' . $post_type . \'" href="\' . $post_type_archive . \'" title="\' . $post_type_object->labels->name . \'">\' . $post_type_object->labels->name . \'</a></li>\';
echo \'<li class="separator"> \' . $separator . \' </li>\';
}
$custom_tax_name = get_queried_object()->name;
echo \'<li class="item-current item-archive"><strong class="bread-current bread-archive">\' . $custom_tax_name . \'</strong></li>\';
} else if ( is_single() ) {
// If post is a custom post type
$post_type = get_post_type();
// If it is a custom post type display name and link
if($post_type != \'post\') {
$post_type_object = get_post_type_object($post_type);
$post_type_archive = get_post_type_archive_link($post_type);
echo \'<li class="item-cat item-custom-post-type-\' . $post_type . \'"><a class="bread-cat bread-custom-post-type-\' . $post_type . \'" href="\' . $post_type_archive . \'" title="\' . $post_type_object->labels->name . \'">\' . $post_type_object->labels->name . \'</a></li>\';
echo \'<li class="separator"> \' . $separator . \' </li>\';
}
// Get post category info
$category = get_the_category();
if(!empty($category)) {
// Get last category post is in
$last_category = end(array_values($category));
// Get parent any categories and create array
$get_cat_parents = rtrim(get_category_parents($last_category->term_id, true, \',\'),\',\');
$cat_parents = explode(\',\',$get_cat_parents);
// Loop through parent categories and store in variable $cat_display
$cat_display = \'\';
foreach($cat_parents as $parents) {
$cat_display .= \'<li class="item-cat">\'.$parents.\'</li>\';
$cat_display .= \'<li class="separator"> \' . $separator . \' </li>\';
}
}
// If it\'s a custom post type within a custom taxonomy
$taxonomy_exists = taxonomy_exists($custom_taxonomy);
if(empty($last_category) && !empty($custom_taxonomy) && $taxonomy_exists) {
$taxonomy_terms = get_the_terms( $post->ID, $custom_taxonomy );
$cat_id = $taxonomy_terms[0]->term_id;
$cat_nicename = $taxonomy_terms[0]->slug;
$cat_link = get_term_link($taxonomy_terms[0]->term_id, $custom_taxonomy);
$cat_name = $taxonomy_terms[0]->name;
}
// Check if the post is in a category
if(!empty($last_category)) {
echo $cat_display;
echo \'<li class="item-current item-\' . $post->ID . \'"><strong class="bread-current bread-\' . $post->ID . \'" title="\' . get_the_title() . \'">\' . get_the_title() . \'</strong></li>\';
// Else if post is in a custom taxonomy
} else if(!empty($cat_id)) {
echo \'<li class="item-cat item-cat-\' . $cat_id . \' item-cat-\' . $cat_nicename . \'"><a class="bread-cat bread-cat-\' . $cat_id . \' bread-cat-\' . $cat_nicename . \'" href="\' . $cat_link . \'" title="\' . $cat_name . \'">\' . $cat_name . \'</a></li>\';
echo \'<li class="separator"> \' . $separator . \' </li>\';
echo \'<li class="item-current item-\' . $post->ID . \'"><strong class="bread-current bread-\' . $post->ID . \'" title="\' . get_the_title() . \'">\' . get_the_title() . \'</strong></li>\';
} else {
echo \'<li class="item-current item-\' . $post->ID . \'"><strong class="bread-current bread-\' . $post->ID . \'" title="\' . get_the_title() . \'">\' . get_the_title() . \'</strong></li>\';
}
} else if ( is_category() ) {
// Category page
echo \'<li class="item-current item-cat"><strong class="bread-current bread-cat">\' . single_cat_title(\'\', false) . \'</strong></li>\';
} else if ( is_page() ) {
// Standard page
if( $post->post_parent ){
// If child page, get parents
$anc = get_post_ancestors( $post->ID );
// Get parents in the right order
$anc = array_reverse($anc);
// Parent page loop
if ( !isset( $parents ) ) $parents = null;
foreach ( $anc as $ancestor ) {
$parents .= \'<li class="item-parent item-parent-\' . $ancestor . \'"><a class="bread-parent bread-parent-\' . $ancestor . \'" href="\' . get_permalink($ancestor) . \'" title="\' . get_the_title($ancestor) . \'">\' . get_the_title($ancestor) . \'</a></li>\';
$parents .= \'<li class="separator separator-\' . $ancestor . \'"> \' . $separator . \' </li>\';
}
// Display parent pages
echo $parents;
// Current page
echo \'<li class="item-current item-\' . $post->ID . \'"><strong title="\' . get_the_title() . \'"> \' . get_the_title() . \'</strong></li>\';
} else {
// Just display current page if not parents
echo \'<li class="item-current item-\' . $post->ID . \'"><strong class="bread-current bread-\' . $post->ID . \'"> \' . get_the_title() . \'</strong></li>\';
}
} else if ( is_tag() ) {
// Tag page
// Get tag information
$term_id = get_query_var(\'tag_id\');
$taxonomy = \'post_tag\';
$args = \'include=\' . $term_id;
$terms = get_terms( $taxonomy, $args );
$get_term_id = $terms[0]->term_id;
$get_term_slug = $terms[0]->slug;
$get_term_name = $terms[0]->name;
// Display the tag name
echo \'<li class="item-current item-tag-\' . $get_term_id . \' item-tag-\' . $get_term_slug . \'"><strong class="bread-current bread-tag-\' . $get_term_id . \' bread-tag-\' . $get_term_slug . \'">\' . $get_term_name . \'</strong></li>\';
} elseif ( is_day() ) {
// Day archive
// Year link
echo \'<li class="item-year item-year-\' . get_the_time(\'Y\') . \'"><a class="bread-year bread-year-\' . get_the_time(\'Y\') . \'" href="\' . get_year_link( get_the_time(\'Y\') ) . \'" title="\' . get_the_time(\'Y\') . \'">\' . get_the_time(\'Y\') . \' Archives</a></li>\';
echo \'<li class="separator separator-\' . get_the_time(\'Y\') . \'"> \' . $separator . \' </li>\';
// Month link
echo \'<li class="item-month item-month-\' . get_the_time(\'m\') . \'"><a class="bread-month bread-month-\' . get_the_time(\'m\') . \'" href="\' . get_month_link( get_the_time(\'Y\'), get_the_time(\'m\') ) . \'" title="\' . get_the_time(\'M\') . \'">\' . get_the_time(\'M\') . \' Archives</a></li>\';
echo \'<li class="separator separator-\' . get_the_time(\'m\') . \'"> \' . $separator . \' </li>\';
// Day display
echo \'<li class="item-current item-\' . get_the_time(\'j\') . \'"><strong class="bread-current bread-\' . get_the_time(\'j\') . \'"> \' . get_the_time(\'jS\') . \' \' . get_the_time(\'M\') . \' Archives</strong></li>\';
} else if ( is_month() ) {
// Month Archive
// Year link
echo \'<li class="item-year item-year-\' . get_the_time(\'Y\') . \'"><a class="bread-year bread-year-\' . get_the_time(\'Y\') . \'" href="\' . get_year_link( get_the_time(\'Y\') ) . \'" title="\' . get_the_time(\'Y\') . \'">\' . get_the_time(\'Y\') . \' Archives</a></li>\';
echo \'<li class="separator separator-\' . get_the_time(\'Y\') . \'"> \' . $separator . \' </li>\';
// Month display
echo \'<li class="item-month item-month-\' . get_the_time(\'m\') . \'"><strong class="bread-month bread-month-\' . get_the_time(\'m\') . \'" title="\' . get_the_time(\'M\') . \'">\' . get_the_time(\'M\') . \' Archives</strong></li>\';
} else if ( is_year() ) {
// Display year archive
echo \'<li class="item-current item-current-\' . get_the_time(\'Y\') . \'"><strong class="bread-current bread-current-\' . get_the_time(\'Y\') . \'" title="\' . get_the_time(\'Y\') . \'">\' . get_the_time(\'Y\') . \' Archives</strong></li>\';
} else if ( is_author() ) {
// Auhor archive
// Get the author information
global $author;
$userdata = get_userdata( $author );
// Display author name
echo \'<li class="item-current item-current-\' . $userdata->user_nicename . \'"><strong class="bread-current bread-current-\' . $userdata->user_nicename . \'" title="\' . $userdata->display_name . \'">\' . \'Author: \' . $userdata->display_name . \'</strong></li>\';
} else if ( get_query_var(\'paged\') ) {
// Paginated archives
echo \'<li class="item-current item-current-\' . get_query_var(\'paged\') . \'"><strong class="bread-current bread-current-\' . get_query_var(\'paged\') . \'" title="Page \' . get_query_var(\'paged\') . \'">\'.__(\'Page\') . \' \' . get_query_var(\'paged\') . \'</strong></li>\';
} else if ( is_search() ) {
// Search results page
echo \'<li class="item-current item-current-\' . get_search_query() . \'"><strong class="bread-current bread-current-\' . get_search_query() . \'" title="Search results for: \' . get_search_query() . \'">Search results for: \' . get_search_query() . \'</strong></li>\';
} elseif ( is_404() ) {
// 404 page
echo \'<li>\' . \'Error 404\' . \'</li>\';
}
echo \'</ul>\';
}
}
这东西是经过测试的。在我当地的环境中,它运行得很好。
希望以上答案对您有所帮助。