/**
 * 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);
}
Exemplo n.º 2
0
/**
 * 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";
 }