向面包屑添加分隔符

时间:2014-02-07 作者:AndrettiMilas

我拼凑了一个breadcrumbs代码,它显示子页面/帖子,并为schema标记为up。

此代码唯一没有的是每个链接之间的分隔符。如何在一个实例中添加分隔符,而不是在每个生成的链接之后添加分隔符?

function crumbs() {
 if ((is_page() && ! is_category()) || is_archive() || is_single() || is_single()) {
 echo \'<div class="crumbs"><span xmlns:v="http://rdf.data-vocabulary.org/#">\';
 echo \'<span typeof="v:Breadcrumb"><a rel="v:url" property="v:title" href="\'.get_bloginfo(\'url\').\'">Home</a></span>\';
 $post_ancestors = get_post_ancestors($post);
 if ($post_ancestors) {
 $post_ancestors = array_reverse($post_ancestors);
 foreach ($post_ancestors as $crumb)
 echo \'<span typeof="v:Breadcrumb"><a rel="v:url" property="v:title" href="\'.get_permalink($crumb).\'">\'.get_the_title($crumb).\'</a></span>\';
 }
 if (is_category() || is_single()) {
 $category = get_the_category();
 echo \'<span typeof="v:Breadcrumb"><a rel="v:url" property="v:title" href="\'.get_category_link($category[0]->cat_ID).\'">\'.$category[0]->cat_name.\'</a></span>\';
 }
 if (!is_category())
 echo \'<span typeof="v:Breadcrumb"><span class="crumbs-last" property="v:title">\'.get_the_title().\'</span></span>\';
 echo \'</span></div>\';
 }
}

2 个回复
最合适的回答,由SO网友:tfrommen 整理而成

我不确定您是否希望这样,但是,这可以通过CSS实现。

.crumbs > span > span + span {
    margin-left: 1em;
}

.crumbs > span > span + span:before {
    content: \'|\'; /* or something else */
    *display: inline;
    display: inline-block;
    margin-left: -1em;
    width: 1em;
    text-align: center;
}
// EDIT
如果您只想使用PHP,那么可以这样做:

function crumbs() {
    if ((is_page() && ! is_category()) || is_archive() || is_single() || is_single()) {
        $crumbs = \'\';
        $crumbs .= \'<div class="crumbs"><span xmlns:v="http://rdf.data-vocabulary.org/#">\';
        $crumbs .= \'<span typeof="v:Breadcrumb"><a rel="v:url" property="v:title" href="\'.get_bloginfo(\'url\').\'">Home</a></span>\';
        $post_ancestors = get_post_ancestors($post);

        if ($post_ancestors) {
            $post_ancestors = array_reverse($post_ancestors);
            foreach ($post_ancestors as $crumb)
                $crumbs .= \'<span typeof="v:Breadcrumb"><a rel="v:url" property="v:title" href="\'.get_permalink($crumb).\'">\'.get_the_title($crumb).\'</a></span>\';
        }

        if (is_category() || is_single()) {
            $category = get_the_category();
            $crumbs .= \'<span typeof="v:Breadcrumb"><a rel="v:url" property="v:title" href="\'.get_category_link($category[0]->cat_ID).\'">\'.$category[0]->cat_name.\'</a></span>\';
        }

        if (!is_category())
            $crumbs .= \'<span typeof="v:Breadcrumb"><span class="crumbs-last" property="v:title">\'.get_the_title().\'</span></span>\';

        $crumbs .= \'</span></div>\';

        $close_crumb = \'</span>\';
        $open_crumb = \'<span typeof="v:Breadcrumb">\';
        $separator = \'<span class="separator">|</span>\';
        echo str_replace($close_crumb.$open_crumb, $close_crumb.$separator.$open_crumb, $crumbs);
    }
}
是的,这不好,但这是因为整件事,伊姆霍。

SO网友:Brad Dalton

如果您的主题包含面包屑过滤器,则可以在函数文件中使用类似的代码,但主题特定的问题通常不在这里讨论。

add_filter(\'theme_breadcrumb_args_filter\', \'customize_separator_breadcrumbs\');

function customize_separator_breadcrumbs($args) {
$args[\'sep\'] = \' >> \';
return $args;
}
更换theme_breadcrumb_args_filter 使用您的主题面包屑过滤器。

结束

相关推荐

在模板中包含php文件

比如在我的主题函数中。php文件中,我包含了一个php文件,该文件只能在管理控制面板中访问,并命名为主题选项。php。require_once ( get_template_directory() . \'/theme-options.php\' ); 正如我所说,只有在包含以下基本结构的情况下,才能在管理控制面板中访问此文件:function my_theme_init(){ register_setting(\'my_theme_group\', \'my_theme\');