自定义Wordpress生成的痕迹链接

时间:2013-03-15 08:19:45

标签: php jquery wordpress

美好的一天

我正在使用Wordpress,我使用的是breadcrumbs插件(Breadcrumb NavXT)。现在它运行良好,我希望自定义链接到特定链接的方式:

现在的情况如下:

我有一个页面,在页面上是帖子的链接。因此,当您单击页面上的某个链接时,它会将您带到帖子中。现在这个帖子属于名为Drill Rigs的类别,而Drill Rigs属于产品的子类别。

现在,帖子页面上有“产品>钻井平台”(父/子)类别,面包屑显示如下:

Home>products>drill rigs>postname

问题是,您点击上面的产品链接,它会转到产品的类别页面:

siteurl/category/products

而不是被称为产品的实际wordpress页面(包含链接到上述帖子的链接:

siteurl /页面的绝对链接,这是一个独特的链接,例如。 SITEURL / 803-2

据我所知,你不能改变一个类别(帖子中唯一的)到一个页面的路径,无论是在wordpress还是插件中。

我能想到的最好的方法是将自定义jquery或php添加到帖子php页面(或索引/标题页面),查找包含托管标题“products”的锚标记的容器div ...和然后用我的自定义唯一页面网址替换该锚标记...

我该怎么做......?

5 个答案:

答案 0 :(得分:1)

function the_breadcrumb() {

$sep = '/';

if (!is_front_page()) {

    echo '<div class="breadcrumbs">';
    echo '<a href="';
    echo get_option('home');
    echo '">';
    bloginfo('name');
    echo '</a>' . $sep;

    if (is_category() || is_single() ){
        the_category('title_li=');
    } elseif (is_archive() || is_single()){
        if ( is_day() ) {
            printf( __( '%s', 'text_domain' ), get_the_date() );
        } elseif ( is_month() ) {
            printf( __( '%s', 'text_domain' ), get_the_date( _x( 'F Y', 'monthly archives date format', 'text_domain' ) ) );
        } elseif ( is_year() ) {
            printf( __( '%s', 'text_domain' ), get_the_date( _x( 'Y', 'yearly archives date format', 'text_domain' ) ) );
        } else {
            _e( 'Blog Archives', 'text_domain' );
        }
    }

    if (is_single()) {
        echo $sep;
        the_title();
    }

    if (is_page()) {
        echo the_title();
    }

    if (is_home()){
        global $post;
        $page_for_posts_id = get_option('page_for_posts');
        if ( $page_for_posts_id ) { 
            $post = get_page($page_for_posts_id);
            setup_postdata($post);
            the_title();
            rewind_posts();
        }
    }

    echo '</div>';
}

}

尝试这个希望,这可能对你有帮助

答案 1 :(得分:1)

在这里尝试使用function.php中的nav Navxt插件

http://daniel.shortens.net/woocommerce-breadcrumb-navxt

答案 2 :(得分:1)

此代码适用于您帖子的异步内容:(复制到functions.php中)

function ariane() {
    $cat_id         = get_the_category()[0]->term_id;
    $breadcrumb     = '<li>' . get_the_title() . '</li>';

    $if_parent = TRUE;

    while($if_parent == TRUE) :
        $cat_object     = get_category($cat_id);
        $cat            = $cat_object->term_id;
        $categoryURL    = get_category_link($cat);
        $name           = $cat_object->name;
        $cat_id         = $cat_object->parent;              

        $add_link       = '<li><a href="' . $categoryURL . '">' . $name . '</a></li>';

        $breadcrumb     = substr_replace($breadcrumb, $add_link, 0, 0);

        if($cat_id  == 0) :
            $if_parent = FALSE;
        endif;
    endwhile;

    echo '<ul>' . $breadcrumb . '</ul>';    
}

在您的archive.php或WP_QUERY循环中

<div class="ariane"><?php ariane(); ?></div>

在CSS中:

.ariane ul{
    display: flex;
    justify-content: flex-start;
    align-items: center;
}  
.ariane li:not(:last-child):after {
    content: '>';
    margin: 0 5px;
}

答案 3 :(得分:0)

您可以使用该功能通过编码来设置您的面包屑:

function the_breadcrumb() {
if (!is_home()) {
    echo '<a href="';
    echo get_option('home');
    echo '">';
    echo "Home";//bloginfo('name');
    echo "</a> / ";
    if (is_category() || is_single()) {
        the_category('title_li=');
        if (is_single()) {
            echo " / ";
            the_title();
        }
    } elseif (is_page()) {
        echo the_title();
    }
}

}

将上述代码放在function.php文件中

你必须只调用你想要显示bredcrumb的函数

<?php the_breadcrumb(); ?>

希望这会对你有帮助......

答案 4 :(得分:0)

<script type="text/javascript">
$('#breadcrumbs .category[href="http://mysite.com/category/products"]').attr('href','http://mysite.com/803-2');
</script>

其中:

http://mysite.com/803-2

是p [我希望链接到...的年龄的网址...