/** * Gets the items for the breadcrumb item if bbPress is installed. * * @since 0.4 * * @param array $args Mixed arguments for the menu. * @return array List of items to be shown in the item. */ function breadcrumbs_plus_get_bbpress_items($args = array()) { $item = array(); $post_type_object = get_post_type_object(bbp_get_forum_post_type()); if (!empty($post_type_object->has_archive) && !bbp_is_forum_archive()) { $item[] = '<a href="' . get_post_type_archive_link(bbp_get_forum_post_type()) . '">' . bbp_get_forum_archive_title() . '</a>'; } if (bbp_is_forum_archive()) { $item[] = bbp_get_forum_archive_title(); } elseif (bbp_is_topic_archive()) { $item[] = bbp_get_topic_archive_title(); } elseif (bbp_is_single_view()) { $item[] = bbp_get_view_title(); } elseif (bbp_is_single_topic()) { $topic_id = get_queried_object_id(); $item = array_merge($item, breadcrumbs_plus_get_parents(bbp_get_topic_forum_id($topic_id))); if (bbp_is_topic_split() || bbp_is_topic_merge() || bbp_is_topic_edit()) { $item[] = '<a href="' . bbp_get_topic_permalink($topic_id) . '">' . bbp_get_topic_title($topic_id) . '</a>'; } else { $item[] = bbp_get_topic_title($topic_id); } if (bbp_is_topic_split()) { $item[] = __('Split', 'theme_front'); } elseif (bbp_is_topic_merge()) { $item[] = __('Merge', 'theme_front'); } elseif (bbp_is_topic_edit()) { $item[] = __('Edit', 'theme_front'); } } elseif (bbp_is_single_reply()) { $reply_id = get_queried_object_id(); $item = array_merge($item, breadcrumbs_plus_get_parents(bbp_get_reply_topic_id($reply_id))); if (!bbp_is_reply_edit()) { $item[] = bbp_get_reply_title($reply_id); } else { $item[] = '<a href="' . bbp_get_reply_url($reply_id) . '">' . bbp_get_reply_title($reply_id) . '</a>'; $item[] = __('Edit', 'theme_front'); } } elseif (bbp_is_single_forum()) { $forum_id = get_queried_object_id(); $forum_parent_id = bbp_get_forum_parent($forum_id); if (0 !== $forum_parent_id) { $item = array_merge($item, breadcrumbs_plus_get_parents($forum_parent_id)); } $item[] = bbp_get_forum_title($forum_id); } elseif (bbp_is_single_user() || bbp_is_single_user_edit()) { if (bbp_is_single_user_edit()) { $item[] = '<a href="' . bbp_get_user_profile_url() . '">' . bbp_get_displayed_user_field('display_name') . '</a>'; $item[] = __('Edit'); } else { $item[] = bbp_get_displayed_user_field('display_name'); } } return apply_filters('breadcrumbs_plus_get_bbpress_items', $item, $args); }
/** * Gets the items for the breadcrumb item if bbPress is installed. * * @since 0.4 * * @param array $args Mixed arguments for the menu. * @return array List of items to be shown in the item. */ function breadcrumbs_plus_get_bbpress_items($args = array()) { $item = array(); $post_type_object = get_post_type_object(bbp_get_forum_post_type()); if (!empty($post_type_object->has_archive) && !bbp_is_forum_archive()) { if (function_exists('bp_is_active')) { global $bp; // we're outside the loop! // Assign some variables here $page1 = isset($bp->members->root_slug) ? $bp->members->root_slug : ''; // slug for the Members page. The BuddyPress default is 'members'. $page2 = isset($bp->groups->root_slug) ? $bp->groups->root_slug : ''; // slug for the Groups page. The BuddyPress default is 'groups'. $page3 = isset($bp->activity->root_slug) ? $bp->activity->root_slug : ''; // slug for the Activity page. The BuddyPress default is 'activity'. $page4 = isset($bp->forums->root_slug) ? $bp->forums->root_slug : ''; // slug for the Forums page. The BuddyPress default is 'forums'. $page5 = isset($bp->achievements->root_slug) ? $bp->achievements->root_slug : ''; // slug for the Achievements page. The BuddyPress default is 'achievements'. if (!bp_is_blog_page() && (is_page() || is_page($page1) || is_page($page2) || is_page($page3) || is_page($page4) || is_page($page5)) && !bp_is_user() && !bp_is_single_item() && !bp_is_register_page()) { $item[] = ''; } if (bp_is_user() && !bp_is_register_page()) { $item[] = ''; } } else { //$item[] = '<div class="vbreadcrumb" typeof="v:Breadcrumb"><a href="' . get_post_type_archive_link( bbp_get_forum_post_type() ) . '" rel="v:url" property="v:title">' . bbp_get_forum_archive_title() . '</a></div>'; } } if (bbp_is_forum_archive()) { $item[] = bbp_get_forum_archive_title(); } else { $item[] = '<div class="vbreadcrumb" typeof="v:Breadcrumb"><a href="' . get_post_type_archive_link(bbp_get_forum_post_type()) . '" rel="v:url" property="v:title">' . bbp_get_forum_archive_title() . '</a></div>'; } if (bbp_is_topic_archive()) { $item[] = bbp_get_topic_archive_title(); } elseif (bbp_is_single_view()) { $item[] = bbp_get_view_title(); } elseif (bbp_is_single_topic()) { $topic_id = get_queried_object_id(); $item = array_merge($item, breadcrumbs_plus_get_parents(bbp_get_topic_forum_id($topic_id))); if (bbp_is_topic_split() || bbp_is_topic_merge() || bbp_is_topic_edit()) { $item[] = '<div class="vbreadcrumb" typeof="v:Breadcrumb"><a href="' . bbp_get_topic_permalink($topic_id) . '" rel="v:url" property="v:title">' . bbp_get_topic_title($topic_id) . '</a></div>'; } else { $item[] = ''; } if (bbp_is_topic_split()) { $item[] = __('Split', 'framework'); } elseif (bbp_is_topic_merge()) { $item[] = __('Merge', 'framework'); } elseif (bbp_is_topic_edit()) { $item[] = __('Edit', 'framework'); } } elseif (bbp_is_single_reply()) { $reply_id = get_queried_object_id(); $item = array_merge($item, breadcrumbs_plus_get_parents(bbp_get_reply_topic_id($reply_id))); if (!bbp_is_reply_edit()) { $item[] = bbp_get_reply_title($reply_id); } else { $item[] = '<div class="vbreadcrumb" typeof="v:Breadcrumb"><a href="' . bbp_get_reply_url($reply_id) . '" rel="v:url" property="v:title">' . bbp_get_reply_title($reply_id) . '</a></div>'; $item[] = __('Edit', 'framework'); } } elseif (bbp_is_single_forum()) { $forum_id = get_queried_object_id(); $forum_parent_id = bbp_get_forum_parent_id($forum_id); if (0 !== $forum_parent_id) { $item = array_merge($item, breadcrumbs_plus_get_parents($forum_parent_id)); } $item[] = bbp_get_forum_title($forum_id); } elseif (bbp_is_single_user() || bbp_is_single_user_edit()) { if (bbp_is_single_user_edit()) { $item[] = '<div class="vbreadcrumb" typeof="v:Breadcrumb"><a href="' . bbp_get_user_profile_url() . '" rel="v:url" property="v:title">' . bbp_get_displayed_user_field('display_name') . '</a></div>'; $item[] = __('Edit', 'framework'); } else { $item[] = bbp_get_displayed_user_field('display_name'); } } return apply_filters('breadcrumbs_plus_get_bbpress_items', $item, $args); }
/** * Shows a breadcrumb for all types of pages. * * @since 0.1 * @param array $args * @return string */ function breadcrumbs_plus($args = '') { global $wp_query; $domain = 'breadcrumbs-plus'; /* Set up the default arguments for the breadcrumb. */ $defaults = array('prefix' => '<p id="breadcrumbs">', 'suffix' => '</p>', 'title' => __('You are here: ', 'wt_front'), 'home' => __('Home', 'wt_front'), 'sep' => false, 'front_page' => false, 'bold' => false, 'show_blog' => false, 'singular_post_taxonomy' => 'category', 'singular_portfolio_taxonomy' => 'portfolio_category', 'singular_product_taxonomy' => 'product_cat', 'echo' => true); $args = apply_filters('breadcrumbs_plus_args', $args); $args = wp_parse_args($args, $defaults); if (is_front_page() && !$args['front_page']) { return apply_filters('breadcrumbs_plus', false); } /* Format the title. */ $html = !empty($args['title']) ? '<span class="breadcrumbs-title">' . $args['title'] . '</span>' : ''; /* Format the separator. */ $separator = !empty($args['sep']) ? ' <span class="breadcrumbs-separator">' . $args['sep'] . '</span> ' : ' <span class="breadcrumbs-separator">/</span> '; $show_on_front = get_option('show_on_front'); $home = '<a href="' . home_url('/') . '" rel="home" class="breadcrumbs-begin">' . $args['home'] . '</a>'; if ('page' == $show_on_front && $args['show_blog']) { $bloglink = $home . $separator . '<a href="' . get_permalink(get_option('page_for_posts')) . '">' . get_the_title(get_option('page_for_posts')) . '</a>'; } else { $bloglink = $home; } if (is_front_page()) { $html .= _bold_($home, $args['bold']); } elseif (is_home()) { $html .= $home . $separator . _bold_(get_the_title(get_option('page_for_posts')), $args['bold']); } elseif (is_singular()) { $post_id = (int) $wp_query->get_queried_object_id(); if ('page' === $wp_query->post->post_type) { $html .= $home . $separator; } elseif ('page' !== $wp_query->post->post_type && $wp_query->post->post_type != 'portfolio' && $wp_query->post->post_type != 'product') { $html .= $bloglink . $separator; if (isset($args["singular_{$wp_query->post->post_type}_taxonomy"]) && is_taxonomy_hierarchical($args["singular_{$wp_query->post->post_type}_taxonomy"])) { $terms = wp_get_object_terms($post_id, $args["singular_{$wp_query->post->post_type}_taxonomy"]); $html .= breadcrumbs_plus_get_term_parents($terms[0], $args["singular_{$wp_query->post->post_type}_taxonomy"], $separator) . $separator; } elseif (isset($args["singular_{$wp_query->post->post_type}_taxonomy"])) { $html .= get_the_term_list($post_id, $args["singular_{$wp_query->post->post_type}_taxonomy"], '', ', ', '') . $separator; } } elseif ('portfolio' === $wp_query->post->post_type) { $html .= $home . $separator; if (isset($args["singular_portfolio_taxonomy"]) && is_taxonomy_hierarchical($args["singular_portfolio_taxonomy"])) { $terms = wp_get_object_terms($post_id, $args["singular_portfolio_taxonomy"]); if (!empty($terms[0])) { $html .= breadcrumbs_plus_get_term_parents($terms[0], $args["singular_portfolio_taxonomy"], $separator) . $separator; } } elseif (isset($args["singular_portfolio_taxonomy"])) { $html .= get_the_term_list($post_id, $args["singular_portfolio_taxonomy"], '', ', ', '') . $separator; } } elseif ('product' === $wp_query->post->post_type) { $shop = $home . $separator . '<a href="' . get_permalink(get_option('woocommerce_shop_page_id')) . '">' . get_the_title(get_option('woocommerce_shop_page_id')) . '</a>'; $html .= $shop . $separator; if (isset($args["singular_product_taxonomy"]) && is_taxonomy_hierarchical($args["singular_product_taxonomy"])) { $terms = wp_get_object_terms($post_id, $args["singular_product_taxonomy"]); if (!empty($terms[0])) { $html .= breadcrumbs_plus_get_term_parents($terms[0], $args["singular_product_taxonomy"], $separator) . $separator; } } elseif (isset($args["singular_product_taxonomy"])) { $html .= get_the_term_list($post_id, $args["singular_product_taxonomy"], '', ', ', '') . $separator; } } if ((is_post_type_hierarchical($wp_query->post->post_type) || 'attachment' === $wp_query->post->post_type) && ($parents = breadcrumbs_plus_get_parents($wp_query->post->post_parent, $separator))) { $html .= $parents . $separator; } $html .= _bold_(get_the_title(), $args['bold']); } elseif (is_search()) { $html .= $home . $separator . _bold_(__('Search results for "', 'breadcrumbs-plus') . stripslashes(strip_tags(get_search_query())) . '"', $args['bold']); } elseif (is_archive()) { if ('portfolio' === $wp_query->post->post_type) { $html .= $home . $separator; } elseif ('product' === $wp_query->post->post_type) { if (!is_shop()) { $shop = $home . $separator . '<a href="' . get_permalink(get_option('woocommerce_shop_page_id')) . '">' . get_the_title(get_option('woocommerce_shop_page_id')) . '</a>'; $html .= $shop . $separator; } else { $html .= $home . $separator; } } else { $html .= $bloglink . $separator; } if (is_category() || is_tag() || is_tax() || 'portfolio' === $wp_query->post->post_type) { $term = $wp_query->get_queried_object(); $taxonomy = get_taxonomy($term->taxonomy); if (is_taxonomy_hierarchical($term->taxonomy) && $term->parent && ($parents = breadcrumbs_plus_get_term_parents($term->parent, $term->taxonomy, $separator))) { $html .= $parents . $separator; } $html .= _bold_($term->name, $args['bold']); } elseif (function_exists('is_post_type_archive') && is_post_type_archive()) { $post_type_object = get_post_type_object(get_query_var('post_type')); $html .= _bold_($post_type_object->labels->name, $args['bold']); } elseif (is_date()) { if (is_day()) { $html .= _bold_(__('Archives for ', 'breadcrumbs-plus') . get_the_time('F j, Y'), $args['bold']); } elseif (is_month()) { $html .= _bold_(__('Archives for ', 'breadcrumbs-plus') . single_month_title(' ', false), $args['bold']); } elseif (is_year()) { $html .= _bold_(__('Archives for ', 'breadcrumbs-plus') . get_the_time('Y'), $args['bold']); } } elseif (is_author()) { $html .= _bold_(__('Archives by: ', 'breadcrumbs-plus') . get_the_author_meta('display_name', $wp_query->post->post_author), $args['bold']); } } elseif (is_404()) { $html .= $home . $separator . _bold_(__('Page Not Found', 'breadcrumbs-plus'), $args['bold']); } $breadcrumbs = '<div id="breadcrumbs"><div class="breadcrumbs-plus">'; $breadcrumbs .= $args['prefix']; $breadcrumbs .= $html; $breadcrumbs .= $args['suffix']; $breadcrumbs .= '</div></div>'; $breadcrumbs = apply_filters('breadcrumbs_plus', $breadcrumbs); if (!$args['echo']) { return $breadcrumbs; } echo $breadcrumbs . "\n"; }