Wordpress 面包屑一些问题
Wordpress 本身没有面包屑,但为了SEO我们最好加上这个,用上面包屑,需要解决几个问题。
- 如何分层次,逐步罗列层级?
- 如何获取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 );
}
然后获取即可