Wordpress 面包屑一些问题

Wordpress 本身没有面包屑,但为了SEO我们最好加上这个,用上面包屑,需要解决几个问题。

  1. 如何分层次,逐步罗列层级?
  2. 如何获取URL和Title?

其实很好解决这个问题

在英文网站最好解决。

首先根据url获取当前页面所有slug

$uri=explode('/',$_SERVER['REQUEST_URI']);

例如: xxx.com/products/cate/cate-1/xxx.html 打印出来的数组是array(3) { [0]=>"", [1] =>"products" ,[2]=> "cate",[3]=> "cate-1", [4]=> "xxx",}

然后就可以根据Slug 转换成title

<ol class="breadcrumb">
			<li itemscope="" itemtype="//data-vocabulary.org/Breadcrumb"><a href='/' itemprop="url"><span itemprop="title"><i class="fas fa-home"></i></span></a></li>
			<li itemscope="" itemtype="//data-vocabulary.org/Breadcrumb"><a href='/solutions/' itemprop="url"><span itemprop="title">Solution</span></a></li>
			<?php if(isset($uri['4'])):?><li itemscope="" itemtype="//data-vocabulary.org/Breadcrumb"><a href='/products/<?=$uri[2];?>/' class="active"><span itemprop="title"><?=str_replace('-',' ',$uri[2]);?></span></a></li>
			<li itemscope="" itemtype="//data-vocabulary.org/Breadcrumb" ><a href='' class="active"><span itemprop="title"><?=str_replace('-',' ',$uri[3]);?></span></a></li>
			<?php elseif(isset($uri['3'])):?>
				<li itemscope="" itemtype="//data-vocabulary.org/Breadcrumb" ><a href='' class="active"><span itemprop="title"><?=str_replace('-',' ',$uri[2]);?></span></a></li>
			<?php endif; ?>
		</ol>

以上是英文站的解决方法,那么解决中文站跟slug不匹配的问题?

很简单,定义一个function函数

function custom_taxonomies_terms_links(){
    //根据当前文章ID获取文章信息
	$post = get_post( $post->ID );
    //获取当前文章的文章类型
	$post_type = $post->post_type;
    //获取文章所在的自定义分类法
	$taxonomies = get_object_taxonomies( $post_type, 'objects' );
	$out = array();
	foreach ( $taxonomies as $taxonomy_slug => $taxonomy ){
		$term_list = wp_get_post_terms($post->ID, $taxonomy_slug, array("fields" => "all"));
        echo $term_list[0]->name; //显示文章所处的分类中的第一个
    }
    return implode('', $out );
}

然后获取即可